我有以下配置:
我有 5 个正在运行 nginx 的 LXC 容器。每个容器上都有几个在 nginx 中设置的虚拟主机。这意味着对于一个容器,我有多个可通过端口 80 访问的虚拟主机。
每个容器都有一个 IP,如 10.0.3.100、10.0.3.101 等。
在主机上,我还运行着一个定义了虚拟主机的 nginx 服务器。
我想知道如何实现以下目标:将主机上的 nginx 虚拟主机映射到容器上的每个虚拟主机上。
例如:主机:d1.example.com -> 容器1:d1.example.com 主机:d2.example.com -> 容器1:d2.example.com 主机:d3.example.com -> 容器2:d3.example。 com
所有这些都应该在端口 80 上可用。
有什么办法可以实现这个设置吗?
答案1
这是一个反向代理,您正在寻找的指令是proxy_pass
。的主机实例nginx
将有多个server
容器,例如:
server {
listen 80;
server_name d1.example.com;
location / {
proxy_pass http://10.0.3.100;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Accept-Encoding "";
}
}
请参阅代理模块文档和WebSocket 文档(如果适用)。