【问题标题】:Nginx as reverse proxy for docker containersNginx 作为 docker 容器的反向代理
【发布时间】:2017-03-21 19:06:34
【问题描述】:

我正在尝试让 Nginx 将局域网内的代理连接反向连接到多个 Web 应用程序,包括 docker 容器内的应用程序。

两个 webapp 都可以通过 proxy_pass url 访问

我正在使用以下 dockerfile:

# Set the base image to Ubuntu
FROM ubuntu

RUN apt-get update
RUN apt-get install -y nginx

RUN rm -v /etc/nginx/nginx.conf
RUN echo "daemon off; \n\
 \n\
worker_processes 1; \n\
events { worker_connections 1024; } \n\
 \n\
http { \n\
 \n\
    server { \n\
        listen 99; \n\
 \n\
        server_name dashboard; \n\
        location / { \n\
            proxy_pass http://dashboard:80; \n\
        } \n\
        location /app1 { \n\
            proxy_pass http://otherhostname:9000/app1; \n\
        } \n\
    } \n\
} \n\

" >> /etc/nginx/nginx.conf
EXPOSE 99
CMD service nginx start

将其作为服务(容器)运行时,我可以访问 app1,但不能访问仪表板。

奇怪的是,我以前也有这个工作,而且我很确定我没有更改 dockerfile 的任何基本内容。我错过了什么吗?

编辑:(我目前已经在端口 80 上暴露了仪表板,并且正在使用 nginx 在 99 上进行测试)

我运行 nginx 容器:

docker service create \
    --replicas 1 \
    --name nginx \
    -p 99:99 \
    nginx_image

仪表板也暴露了正确的端口。

docker service create \
    --replicas 1 \
    --name dashboard \
    -p 80:8080 \
    dashboard_image

查看我发现的nginx error.log:

2016/11/08 08:46:41 [error] 25#25: *42 upstream timed out (110: Connection timed out) while connecting to upstream, client: 10.255.0.3, server: dashboard, request: "GET / HTTP/1.1", upstream: "http://dockerhostip:80/", host: "dashboard:99"

【问题讨论】:

  • 请分享您如何设置nginxdashboard 容器的信息(例如docker-compose.yml 文件)。
  • 如果它可能有助于我想做几乎相同的事情:stackoverflow.com/questions/32195108/… 这不是重复的,但我会说它是相关的。
  • 谢谢大家,我发现问题实际上根本不在 nginx 上,而是在仪表板中。这很奇怪,因为它〜过去工作得很好〜。返回调查!

标签: nginx docker reverse-proxy


【解决方案1】:

Nginx 正在按预期工作。我发现将代理传递更改为 example.com 时它工作正常。一定是仪表板中的某些更改导致了混乱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2018-03-20
    • 2020-08-11
    • 2015-01-05
    • 2020-09-10
    • 2019-05-04
    相关资源
    最近更新 更多