nginx proxy_pass到一个目录

时间:2014-10-19 10:12:08

标签: nginx reverse-proxy

如何设置nginx以将单个文件夹反向代理到一个服务器,将其余的root代理反向代理到另一个服务器?

根" /"由CMS管理,而其他"其他"是我自己的程序(独立于CMS)。

这是我目前的配置

server {
    listen  80;
    server_name www.example.com;
    rewrite     ^   https://$server_name$request_uri? permanent;
}

server {
    listen   443;
    ... <ssl stuff> ...

    server_name www.example.com;

    location /other {
        proxy_pass http://192.168.2.2/other ;
    }

    location / {
        proxy_pass http://192.168.1.1;
    }
}

2 个答案:

答案 0 :(得分:7)

对nginx文档的引用:

http://wiki.nginx.org/HttpCoreModule#location

http://wiki.nginx.org/HttpProxyModule#proxy_pass

您应该将other位置更改为:

location /other/ {
    proxy_pass http://192.168.2.2/other/ ;
}

请注意尾随/。它实际上有所不同,因为它得到proxy_pass来规范化请求。我引用:

  

当请求传递给服务器时,与该位置匹配的规范化请求URI的一部分将被[proxy_pass]指令中指定的URI替换。

这应该有助于找到此页面的人。

答案 1 :(得分:0)

You needs to use this code , i think it work

server {
    listen  80;
    server_name www.example.com;
    rewrite     ^   https://$server_name$request_uri? permanent;
}

server {
    listen   443;
    ... <ssl stuff> ...

    server_name www.example.com;

    location = /other {
        proxy_pass https://192.168.2.2/other ;
    }

    location / {
        proxy_pass https://192.168.1.1;
    }
}