从apache请求b.html的同时提供a.html



我正在创建一个nginx reverse proxy到apache。Apache运行在8080端口,nginx运行在80端口。

我希望实现以下目标;

当我请求页面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;
        }
}

我还没有任何经验,但我渴望学习如何使它工作…

首先,proxy_redirect指令与您需要的相反。它仅用于重写来自上游的3xx响应中的Location响应头。详情请参阅本文档

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

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

最新更新