我有三个 LXC 容器(CN1、CN2、CN3)。它们各自运行自己的 Apache 实例并拥有自己的网络,因此每个容器都有自己的私有 IP。
我将所有容器设置为仅监听 Apache 的私有 IP。我还设置了 Nginx 作为主机的代理,根据请求的域引导任何流量。
因此,我有 web1 -> CN1(10.0.3.2),web2 -> CN2(10.0.3.3),web3 -> CN3(10.0.3.4)。
当我访问 web1 时,它显示正确的页面。当我访问 web2 时,它显示正确的页面。然而,当我访问 web3 时,它显示 web2 的页面。
这是我的 Nginx 服务器配置:
web2
服务器 { 服务器名称web2; 地点 / { proxy_set_header X-真实IP $remote_addr; proxy_set_header 主机 $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 代理密码 http://10.0.3.3:802; } }
web3
服务器 { 服务器名称web3; 地点 / { proxy_set_header X-真实IP $remote_addr; proxy_set_header 主机 $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 代理密码 http://10.0.3.4:804; } }
Apache 在 web3 上运行,当我从主机本身 telnet 到它时,我得到了该页面:
root@SKYNet:/etc/nginx/sites-available# telnet 10.0.3.4 804 尝试 10.0.3.4... 已连接到 10.0.3.4。 转义字符是‘^]’。 获取/HTTP/1.1 主机:web3 HTTP/1.1 200 正常 日期:2013 年 5 月 26 日星期日 17:00:27 GMT 服务器:Apache/2.2.22(Ubuntu) 最后修改时间:2013 年 5 月 26 日星期日 16:27:58 GMT ETag:“20457c-b1-4dda183dd360e” 接受范围:字节 内容长度:177 变化:接受编码 内容类型:text/html X-Pad:避免浏览器错误有用!
这是该服务器的默认网页。
Web 服务器软件正在运行,但尚未添加任何内容。
我也可以从家里的机器 ping 它,也可以从允许 ping 网站的外部站点 ping 它。我甚至让一个朋友测试它,它显示了同样的东西(web2 的索引文件而不是它自己的)。
答案1
我忘记启用 Nginx 配置。
假设你的站点可用配置存储在/etc/nginx/sites-available/
并且 Nginx 读取/etc/nginx/sites-enabled/
以查看要处理的服务器,请执行以下操作:
ln -s /etc/nginx/sites-available/server_config /etc/nginx/sites-enabled/server_config
然后重新启动或重新加载 Nginx。