Docker、nginx、nginx 代理未重定向到正确的容器
Docker, nginx, nginx proxy not redirecting to the right container
我正在 Ubuntu 服务器中设置一些容器。我用这种方式创建了两个简单的图像:
Docker 文件:static-site
FROM nginx:alpine
COPY ./site/ /usr/share/nginx/html
Docker 文件:static-content
FROM nginx:alpine
COPY ./assets/ /usr/share/nginx/html
Dockerfile 位于不同的位置
到这里完全没有问题。我已经安装了 nginx-proxy 并使用 VIRTUAL_HOST
到 运行 它们:
docker run -d -p 80 -e VIRTUAL_HOST=mysite.com static-site
docker run -d -p 80 -e VIRTUAL_HOST=static.mysite.com static-content
结果是无论我在浏览器中输入什么地址,它总是将我重定向到 mysite.com
。
我做错了什么?
此外,我有这样的 DNS 记录:
*.mysite.com 86400 A 0 xxx.xxx.xx.xx (the ip of mysite.com)
会不会是问题所在?
您不能将两个容器绑定到同一个端口(“80”)。很可能第二个容器已经死了(你可以通过 运行 docker ps
来验证这一点)。或者是 运行 自动分配的端口
docker ps --format " {{.Image}} ==> {{.Ports}}"
nginx ==> 0.0.0.0:32769->80/tcp
nginx ==> 0.0.0.0:32768->80/tcp
要解决此问题,您可以为容器使用不同的端口并将您的 DNS 配置为链接到负载均衡器(以便您可以配置目标端口),或者您切换为使用具有多个服务器定义的单个 Nginx。
Docker 文件:
FROM nginx:alpine
COPY ./site/ /usr/share/nginx/site_html
COPY ./assets/ /usr/share/nginx/assets_html
COPY ./site.conf /etc/nginx/conf.d/default.conf
Nginx 配置:
server {
listen 80;
server_name mysite.com;
root /usr/share/nginx/site_html;
}
server {
listen 80;
server_name static.mysite.com;
root /usr/share/nginx/static_html;
}
我正在 Ubuntu 服务器中设置一些容器。我用这种方式创建了两个简单的图像:
Docker 文件:static-site
FROM nginx:alpine
COPY ./site/ /usr/share/nginx/html
Docker 文件:static-content
FROM nginx:alpine
COPY ./assets/ /usr/share/nginx/html
Dockerfile 位于不同的位置
到这里完全没有问题。我已经安装了 nginx-proxy 并使用 VIRTUAL_HOST
到 运行 它们:
docker run -d -p 80 -e VIRTUAL_HOST=mysite.com static-site
docker run -d -p 80 -e VIRTUAL_HOST=static.mysite.com static-content
结果是无论我在浏览器中输入什么地址,它总是将我重定向到 mysite.com
。
我做错了什么?
此外,我有这样的 DNS 记录:
*.mysite.com 86400 A 0 xxx.xxx.xx.xx (the ip of mysite.com)
会不会是问题所在?
您不能将两个容器绑定到同一个端口(“80”)。很可能第二个容器已经死了(你可以通过 运行 docker ps
来验证这一点)。或者是 运行 自动分配的端口
docker ps --format " {{.Image}} ==> {{.Ports}}"
nginx ==> 0.0.0.0:32769->80/tcp
nginx ==> 0.0.0.0:32768->80/tcp
要解决此问题,您可以为容器使用不同的端口并将您的 DNS 配置为链接到负载均衡器(以便您可以配置目标端口),或者您切换为使用具有多个服务器定义的单个 Nginx。
Docker 文件:
FROM nginx:alpine
COPY ./site/ /usr/share/nginx/site_html
COPY ./assets/ /usr/share/nginx/assets_html
COPY ./site.conf /etc/nginx/conf.d/default.conf
Nginx 配置:
server {
listen 80;
server_name mysite.com;
root /usr/share/nginx/site_html;
}
server {
listen 80;
server_name static.mysite.com;
root /usr/share/nginx/static_html;
}