用于重定向的nginx重写规则

时间:2014-10-30 23:18:15

标签: nginx playframework-2.3

我在host1上运行了两个应用程序:7000和host2:7000。我正在通过nginx反向代理面向两台主机,我希望mydomain.com/admin指向host1:7000 / portal,mydomain.com/user指向host2:7000 / portal。

我写了以下配置

listen       80;
server_name  mydomain.com *.mydomain.com;

location ~ ^/admin/(.*)$ {
    proxy_pass $scheme://<IP-ADDRESS>/$1;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
}

我可以访问mydomain.com/admin重定向到host1:7000 / portal,但当应用程序从host1:7000 / portal重定向到host1:7000 / login通过相对路径时,在浏览器中我看到mydomain。 COM /登录。我需要做什么才能获得第二次重定向到mydomain / admin / login?

1 个答案:

答案 0 :(得分:0)

为什么人们无缘无故地使用正则表达式并且遇到各种问题?...

location /admin/ {
    proxy_pass http://host1:7000/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
}

这会自动从代理请求中删除/admin/,并将其添加到Location标头(用于重定向)中。

请参阅proxy_passproxy_redirect文档。