如何配置 nginx 根据主机名将流量发送到内部 ip?

如何配置 nginx 根据主机名将流量发送到内部 ip?

我打算为几个朋友设置一个 VPS“服务”,但我只有一个 IP。我想设置 nginx,使其工作如下:

域1。网络地址 -> 192.168.1.1

域2.com -> 192.168.1.2

有提到这里所以我知道这是有可能的。

此外,假设一切都已设置并正常运行,我是否可以进入 domain1.com:400 并访问 192.168.1.1 端口 400?

谢谢!

答案1

您可以尝试设置多个服务器实例,每个实例响应相应的 server_name,然后从每个实例进行代理,如下所示:

server {
    listen x.x.x.x:400; # your one IP

    server_name domain1.com;

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

server {
    listen x.x.x.x:400: # your one IP

    server_name domain2.com;

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

答案2

类似下面的方法可以为你工作:

    map $http_host $upstream_proxy {
            default     192.168.1.3;

            domain1.com 192.168.1.1;
            domain2.com 192.168.1.2;
    }

    server {
            server_name _;

            location / {
                    proxy_pass http://$upstream_proxy;
            }       
    }

有关详细信息,请参阅nginx_http_map_模块

高血压

相关内容