我的问题是什么?
我有一个 IP 地址和多个带子域的域。所有域和子域都指向我的 IP 到 Debian 机器,nginx 版本:nginx/1.10.3。我在本地网络中还有其他我想使用的服务器。
我想要的是?
假设我有以下域:
- 示例.com
- 例子
- private.example.me
我想要积分示例.com到本地 IP10.0.0.3我想把它用于港口80和443
接下来我想要点例子到本地 IP10.0.0.4这就是我想使用端口的主要问题22 - SSH在它和端口上80和443
最后一个(也许是最糟糕的)观点private.example.me到本地 IP10.0.0.5在端口上22 - SSH、80、443、5900 - VNC、...
我目前所知道的是什么?
我有很多配置/etc/nginx/sites-enabled/*像这样:
root@Gateway:/# nano /etc/nginx/sites-enabled/example.com
server {
listen 80;
listen [::]:80;
server_name example.com;
root /var/www/example.com;
location ~ ^/(.*)$ {
proxy_pass http://10.0.0.3:80/$1$is_args$args;
proxy_set_header Host example.com;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 443;
listen [::]:443;
server_name example.com;
root /var/www/example.com;
location ~ ^/(.*)$ {
proxy_pass http://10.0.0.3:443/$1$is_args$args;
proxy_set_header Host example.com;
proxy_set_header X-Real-IP $remote_addr;
}
}
这是可行的,因为它是 HTTP 流量,但它不适用于 TCP/UDP 流量,如 SSH、VNC、VPN 等。
如何实现这个功能?
答案1
不行。nginx 可以充当 HTTP 代理,但不能用于 SSH 或 VNC。此外,至少对于 SSH(我相信 VNC 也是如此),您根本无法根据域名分离流量,因为流量中没有可以实现这一点的信息。
答案2
只要您的代理后面只有一个 vnc 和 ssh 服务器,您就可以在网关主机上使用 ip 转发将流量重定向到这些服务。不是使用 nginx,而是使用 iptables。