我目前有一台 DigitalOcean Ubuntu 16.04x64 服务器,其中装有 Linux 容器,用于容纳多个站点。其中一个容器安装了 HAProxy,并将传入流量路由到相应的容器。每个容器在创建时都有一个唯一的 IP 地址。
我运行以下命令为 iptables nat 表创建规则:
sudo iptables -t nat -I PREROUTING -i eth0 -p TCP -d 你的服务器ip/32 --dport 80 -j DNAT --to-destination 你的haproxyip:80
这可以正常工作,并且我指向服务器的任何域都会被重定向到它应该去的容器。
我目前正在从另一台服务器迁移网站,在新服务器上测试完网站之前,仍然需要将域名指向那里。此外,为了未来的开发,我希望在尚未将域名指向容器的情况下访问容器。
所以我的问题是,如何编辑上述命令来创建允许子目录的规则?例如:159.203.86.144/测试或者159.203.86.144/10.23.98.211
答案1
同意迈克尔·汉普顿,如果你想这样做,你应该使用反向代理,比如nginx
,这将是更好的解决方案。你可以在本文。
答案2
好的,事实证明,最初制定的规则已经可以处理我到达容器所需的子目录路径。
我将此配置添加到 /etc/haproxy/haproxy.conf 的前端
acl host_test url_beg -i /linux_container_ip
然后在 Linux 容器中,为 /etc/nginx/sites-available/default 添加一个别名
location /linux_container_ip {
alias /path/to/root/production/folder/here;
}