如何根据Nginx中的子域将代理反向到不同的地方?


14

我有多个子域,都指向一台计算机和一个IP地址。在这台机器上,我想让nginx充当反向代理,并且我希望它使用哪个子域来访问该机器,然后将其反向代理到其他服务器。我所见过的使用nginx作为反向代理的所有示例都使用location,但是据我了解,这仅适用于路径,不适用于不同的子域。我怎样才能实现自己想要的?


2
这可能太宽泛了。您可以发布更多有关您已经尝试过的内容的信息吗?
2016年

Answers:


27

除非我完全误解了您的问题,否则:您只需为每个子域设置服务器块,然后为该子域的根定义正确的反向代理,即遵循以下内容:

 server {
        server_name subdomain1.example.com;
        location / {
            proxy_pass       http://hostname1:port1;
        }
 }
 server {
        server_name subdomain2.example.com;
        location / {
            proxy_pass       http://hostname2:port2;
        }
 }

对不起,您的回复很晚,但我知道了!
markasoftware

3

几乎相同的方式。

location /foo {
    rewrite ^/foo(.+)$ /$1 break;
    proxy_pass http://foo;
}

location /bar {
    rewrite ^/bar(.+)$ /$1 break;
    proxy_pass http://bar;
}

1
这不是我想要的。请参阅已接受的答案
-markasoftware

1
咀嚼和消化是请求者的负担,而不是我的负担。
drookie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.