1

我正在创建一个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;
        }
}

我还没有零经验,但我很想学习如何让这个工作......

4

1 回答 1

1

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

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

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

有关详细信息,请参阅此文档

于 2016-06-30T14:14:21.173 回答