nginx反向代理一个apache2网站:url返回不对应代理服务器

时间:2014-10-11 11:52:36

标签: nginx apache2 url-routing reverse-proxy

我正在寻找一些如何做我目前想做的事情。

这是我想要做的: Nginx服务器代理(srvrp) - > Apache2(srvdeba)

这是nginx网站srvrp的配置:

server {
        server_name www.egloff-j-quest-etna.nx;

        location / {
                 proxy_pass http://srvdeba.egloff-j-quest-etna.nx;
                 proxy_redirect off;
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header Host $proxy_host;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_set_header X-NginX-Proxy true;
        }
}

以下是启用srvdeba网站的配置:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName www.srvdeba.egloff-j-quest-etna.nx
    ServerAlias *srvdeba.egloff-j-quest-etna.nx

    DocumentRoot /opt/wordpress
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /opt/wordpress/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

目前,这是有效的,但不完全是,问题如下: 通过代理加载网站时,网站上的所有链接都在此表单上:     http://srvdeba.egloff-j-quest-etna.nx 我希望它们对应于:     www.egloff-J-追求-etna.nx

所以,我提出了2个解决方案,第一个是使用ngx_http_sub_module 第二个是配置apache2,因此他知道他正在被代理,并且可以在通过代理服务器完成请求时重写URL。 srvdeba在没有代理服务器的情况下访问时必须工作。 所以我需要你告诉我什么是最好的解决方案!

提前感谢您的回答。

1 个答案:

答案 0 :(得分:0)

所以,很久以前我终于找到了这个问题的答案。 我认为我最好分享给你。

问题不是来自apache或nginx。 问题来自网站生成错误的网址,因为他不知道他正在被代理。 因此,如果您遇到类似问题,则应确保网站知道他正在被代理,并生成正确的URL以满足客户端请求。