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

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

我有多个子域,它们都指向一台机器和一个 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;
}

相关内容