首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker,nginx,nginx代理没有重定向到正确的容器

Docker,nginx,nginx代理没有重定向到正确的容器
EN

Stack Overflow用户
提问于 2020-02-23 11:06:52
回答 1查看 137关注 0票数 0

我正在我的Ubuntu服务器上设置一些容器。我用这种方式创建了两个简单的图像:

Dockerfile:static-site

代码语言:javascript
复制
FROM nginx:alpine
COPY ./site/ /usr/share/nginx/html

Dockerfile:static-content

代码语言:javascript
复制
FROM nginx:alpine
COPY ./assets/ /usr/share/nginx/html

Dockerfile位于不同的位置

在这里之前一点问题都没有。我安装了nginx代理并使用VIRTUAL_HOST运行它们:

代码语言:javascript
复制
 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记录:

代码语言:javascript
复制
*.mysite.com    86400   A   0   xxx.xxx.xx.xx (the ip of mysite.com)

会不会是问题所在?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-23 15:35:47

您不能将两个容器绑定到同一个端口("80")。最有可能是第二个容器死了(您可以通过运行docker ps来验证这一点)。或者它使用自动分配的端口运行。

代码语言:javascript
复制
docker ps --format " {{.Image}} ==> {{.Ports}}"
nginx ==> 0.0.0.0:32769->80/tcp
nginx ==> 0.0.0.0:32768->80/tcp

要解决此问题,您可以为容器使用不同的端口,并将DNS配置为链接到负载均衡器(因此您可以配置目标端口),或者切换到具有多个服务器定义的单个Nginx。

Dockerfile:

代码语言:javascript
复制
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 Config:

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60361553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档