我很难将Nginx配置为反向代理,以便可以从Internet访问带有私有IP地址的虚拟机。
我用当前配置绘制了一个图。
我的专用服务器在Proxmox虚拟机管理程序上运行,并且只有1个公共IP地址。虚拟机管理程序上已安装一个网桥,以使虚拟机通过其本地IP地址访问Internet。
我进行了一些研究,发现使用Nginx反向代理可以通过互联网从私有IP地址(正在运行网站的人)访问具有虚拟机的虚拟机,但是我在设置时遇到了一些麻烦。
我在管理程序上的配置/ etc / network / interfaces
root@ns568745:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# vmbr0: Bridging. Make sure to use only MAC adresses that were assigned to you.
auto vmbr0
iface vmbr0 inet static
address 40.53.XX.XX/24
gateway 40.53.XX.254
bridge_ports eno1
bridge_stp off
bridge_fd 0
auto vmbr1
iface vmbr1 inet static
address 192.168.4.254/24
broadcast 192.168.4.255
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '192.168.4.254/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.4.254/24' -o vmbr0 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i vmbr1 -p tcp --dport 80 -j DNAT --to 192.168.4.2:80
post-down iptables -t nat -D PREROUTING -i vmbr1 -p tcp --dport 80 -j DNAT --to 192.168.4.2:80
post-up iptables -t nat -A PREROUTING -i vmbr1 -p tcp --dport 443 -j DNAT --to 192.168.4.2:443
post-down iptables -t nat -D PREROUTING -i vmbr1 -p tcp --dport 443 -j DNAT --to 192.168.4.2:443
Vm1的IP地址为192.168.4.4,并运行一个域名为“ london.austria.com”的网站(使用Apache)
Vm2的IP地址为192.168.4.5,并运行一个域名为“ manchester.austria.com”的网站(使用Apache)
我购买了一个域名,命名为“ austria.com”。
在我的注册商中,我设置了2个子域的A记录:
london.austria.com的A记录指向40.53.XX.XX
manchester.austria.com的A记录指向40.53.XX.XX
VM1配置: 192.168.4.4,子域“ london.austria.com”与Apache一起运行wwebiste。防火墙已禁用
VM2配置: 192.168.4.5,子域“ manchester.austria.com”与Apache运行wwebiste。防火墙已禁用
已通过以下步骤将Nginx安装在LXC ubuntu容器中:
systemctl启动nginx
systemctl启用Nginx
取消链接/ etc / nginx / sites-enabled / default
cd / etc / nginx / sites-available
vim reverse-proxy.conf
server {
listen 80;
listen [::]:80;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
location / {
proxy_pass http://192.168.4.4:80;
}
}
ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
我执行的测试:
在vm1内部:
我可以通过输入IP地址192.168.4.4来访问该网站
我无法通过在浏览器中输入域名“ london.austia.com”来访问该网站。
在家:
我无法访问虚拟机中的网站。
我什至没有进一步测试vm2。