是否可以同时提供代理内容"使用Nginx来自同一域的本地文件?

时间:2017-09-06 13:08:28

标签: nginx

我将Nginx服务器配置为远程Apache服务器的反向代理缓存服务器。此时,一切正常。这是我配置的一部分(我已经留下了一些不相关的部分):

server {
        listen 443 ssl http2;
        server_name www.mywebsite.com mywebsite.com;

    location / {
        proxy_pass https://123.123.123.123;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header REMOTE_ADDR $remote_addr;
        proxy_ignore_headers X-Accel-Expires Expires Vary;
        proxy_redirect off;
        proxy_cache_revalidate off;
        proxy_next_upstream off;
        proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
        proxy_cache_bypass $bypass $do_not_cache;
        proxy_no_cache $do_not_cache;
        proxy_cache_valid any 2880m;
        proxy_cache_valid 404 1m;
        proxy_cache my_cache;
        proxy_cache_min_uses 1;
        proxy_cache_lock on;
        proxy_http_version 1.1;
    }   
}

现在我想要做的是从存储在Nginx服务器上的本地文件提供特定目录中的文件。其余内容仍必须从源服务器缓存:

  • // www.mywebsite.com =>提供来自//123.123.123.123
  • 的缓存内容
  • // www.mywebsite.com/local =>提供本地存储在Nginx服务器上的文件

是否可以在"服务器中包含另一个位置"部分配置?我试过这样的事情,但它不起作用:

location /local/ {
    root /home/user/public_html/local;
    try_files $uri $uri/ =404;
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Max-Age' 1728000;
}

顺便说一句,对不起我的英语。

1 个答案:

答案 0 :(得分:0)

您以正确的方式行事,您应该使用location指令定义另一个alias

location /local/ {
    alias /home/user/public_html/local;
}

现在,当您请求http://YOUR_DOMAIN/local/page.html时,它会投放/home/user/public_html/local/page.html

请记住,nginx必须在指定的根目录中具有读取权限。

阅读this for the subtle difference between root and alias指令。