请求 b.html 时从 apache 服务 a.html

Serving a.html from apache while requesting b.html

我正在为 apache 创建 nginx reverse proxy。 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 响应 headers。有关详细信息,请参阅 this document

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

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

详情见this document