我有多个子域,它们都指向一台机器和一个 IP 地址。在这台机器上,我想让 nginx 充当反向代理,并且根据用于访问机器的子域,我希望它反向代理到不同的服务器。我见过的所有使用 nginx 作为反向代理的示例都使用location
,但据我所知,这仅适用于路径,不适用于不同的子域。我该如何实现我想要的?
答案1
除非我完全误解了你的问题:你只需为每个子域设置服务器块,并为该子域的根定义正确的反向代理,即:
server {
server_name subdomain1.example.com;
location / {
proxy_pass http://hostname1:port1;
}
}
server {
server_name subdomain2.example.com;
location / {
proxy_pass http://hostname2:port2;
}
}
答案2
几乎是一样的。
location /foo {
rewrite ^/foo(.+)$ /$1 break;
proxy_pass http://foo;
}
location /bar {
rewrite ^/bar(.+)$ /$1 break;
proxy_pass http://bar;
}