首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx反向代理+静态文件

nginx反向代理+静态文件
EN

Unix & Linux用户
提问于 2019-04-16 08:34:16
回答 2查看 5.3K关注 0票数 0

我在nginx的反向代理背后为wordpress服务。我希望能够在不同的根目录中提供静态页面。

我试过这个:

代码语言:javascript
复制
server {
    listen            80;
    listen       [::]:80;
    server_name ${NGINX_HOST};
    root /static-pages;
    sendfile          on;
    tcp_nodelay       on;

    location / {
        try_files $uri $uri/ /static-pages/ =404;
        #try_files $uri $uri/ =404;
        #try_files /static-pages $uri/ =404;
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;

        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header      Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;

    }
}

wordpress工作得很好,但是当我尝试访问其中一个静态页面时,我仍然得到404。当然,我可以向我拥有的每个静态页面添加一个location指令,但这似乎是一种开销。我能让它起作用吗?

下面是调试日志的一部分,我认为这是相关的:

代码语言:javascript
复制
[debug] 7#7: *2 generic phase: 12
[debug] 7#7: *2 try files handler
[debug] 7#7: *2 http script var: "/marketing-analyst"
[debug] 7#7: *2 trying to use file: "/marketing-analyst" "/static-pages/marketing-analyst"
[debug] 7#7: *2 http script var: "/marketing-analyst"
[debug] 7#7: *2 trying to use dir: "/marketing-analyst" "/static-pages/marketing-analyst"
[debug] 7#7: *2 try file uri: "/marketing-analyst"

当然,目录/static-pages/marketing-analyst存在。

EN

回答 2

Unix & Linux用户

发布于 2019-04-16 13:58:01

工作解决方案:

代码语言:javascript
复制
server {
    error_log  /var/log/nginx/error.log debug;
    listen            80;
    server_name ${NGINX_HOST};
    sendfile          on;
    tcp_nodelay       on;
    root              /static-pages;
    index             index.html index.php;
    try_files $uri $uri/ @proxy;

    location @proxy {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress$uri;

        proxy_set_header  X-NginX-Proxy true;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_set_header  Host $http_host;
        proxy_set_header  Accept-Encoding     "";
        proxy_set_header  Proxy               "";

    }

    location = / {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;

        proxy_set_header  X-NginX-Proxy true;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_set_header  Host $http_host;
        proxy_set_header  Accept-Encoding     "";
        proxy_set_header  Proxy               "";
    }
}

如果我能挤压两个类似的代理,但没有什么大不了的,我会很高兴的。

票数 1
EN

Unix & Linux用户

发布于 2019-04-16 09:05:40

就快到了。解决方案首先尝试静态文件,然后转到反向代理(wordpress)作为后盾:

代码语言:javascript
复制
server {
    error_log  /var/log/nginx/error.log debug;
    listen            80;
    listen       [::]:80;
    server_name ${NGINX_HOST};
    sendfile          on;
    tcp_nodelay       on;
    root /static-pages;

    location / {
        try_files $uri $uri/ /static-pages/ @proxy;
    }

    location @proxy {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;

        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header      Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

参考资料:

https://www.nginx.com/resources/wiki/start/topics/tutorials/config_陷阱/#代理-一切

但!当我尝试访问/时,/static-pages/index.html (不存在)被拒绝了403个访问。如果没有与请求匹配的目录,我如何告诉它不要检查/index.html,而只返回到代理?

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/512718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档