在请求b.html时从apache提供a.html

时间:2016-06-30 09:23:18

标签: nginx reverse-proxy nginx-location

我正在为apache创建nginx reverse proxy。 Apache在8080上的端口80和nginx上运行。

我希望实现以下目标;

当我请求页面http://server/test.html时,它应该代理到http://server:8080/unknown.html

稍后我会在页面上做一些eval内容并将用户重定向到正确的页面,但我甚至无法让它工作。我始终将test.html作为回复。

我的nginx配置:

server {
        listen   80;

        root /var/www/;
        index index.php index.html index.htm;

        server_name example.com;

        location / {
               # try_files $uri $uri/ /index.php;
        }

        location ~ \.html$ {

                proxy_set_header X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header Host $host;

                #rewrite ^/unknown.html;
                proxy_pass http://127.0.0.1:8080;
                proxy_redirect http://127.0.0.1/test.html http://127.0.0.1:8080/unknown.html;
         }

         location ~ /\.ht {
                deny all;
        }
}

我没有经验,但我很想知道如何让这个工作......

1 个答案:

答案 0 :(得分:1)

首先,proxy_redirect指令与您需要的指令相反。它仅用于重写来自上游的3xx响应中的Location响应头。有关详细信息,请参阅this document

您可以在执行rewrite ... break的位置块中使用proxy_pass语句,例如:

location ... {
    rewrite ^/test.html$ /unknown.html break;
    proxy_pass ...;
}

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