通过Nginx重写附加的端口号

时间:2015-12-24 07:52:04

标签: regex apache mod-rewrite nginx reverse-proxy

您好我使用Nginx作为Gunicorn和Apache的反向代理。某些子域名正被重定向到Gunicorn以及Apache的其他所有内容。 此外,Nginx会将所有http请求重写为https请求。

第一个调用通常有效但是每次与Apache-Site的交互都会添加Apache的监听端口,这会破坏我的设置。 非Apache相关的一切工作都很好。

导致此行为的原因是什么?如何解决?它是一些Apache设置还是我的nginx设置错误?

    # everything to apache
    location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_redirect off;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8090;
            proxy_set_header X-Nginx-Proxy true;
            }

我应该只用8090重写每个请求吗?正则表达式会是什么样的?

1 个答案:

答案 0 :(得分:1)

如果问题只是源自Apache或Apache托管的应用程序的外部重定向(3xx状态响应),则nginx能够使用proxy_redirect指令重写它。您需要研究Location:响应标头的确切内容,但其中一个可能很接近:

proxy_redirect http://example.com:8090/ /
proxy_redirect https://example.com:8090/ /

有关详细信息,请参阅this document

如果问题是在实际文档中嵌入了URL(例如JS,CSS和图像),则需要在托管应用程序本身内修复它。