首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker容器中的Nginx获得“连接重置”错误,但在没有容器的情况下工作正常

Docker容器中的Nginx获得“连接重置”错误,但在没有容器的情况下工作正常
EN

Stack Overflow用户
提问于 2016-04-07 12:40:55
回答 1查看 3.5K关注 0票数 3

我已经简单地设置了三个组件,并将其打包到了码头容器中:

  • PostgreSQL数据库,容器名为workflows-db
  • 端口8000上的Django + uWSGI web服务器,容器名为workflows-django
  • Nginx反向代理,容器名为workflows-nginx

我用Postgres和Django作为容器,它们可以正常工作。现在,我想加入Nginx。如果我只是在主机上本地安装Nginx (没有Docker)并运行它,我的安装程序就能正常工作。

但是,如果我将Nginx完全相同的配置放入单独的码头容器中,它就无法100%地响应https://请求:

代码语言:javascript
复制
This site can’t be reached

The connection was reset.
ERR_CONNECTION_RESET

这是我的配置mysite.conf,插入/etc/nginx/sites-available/mysite.conf/etc/nginx/sites-enabled/mysite.conf

代码语言:javascript
复制
upstream django {
    server workflows-django:8000;
}

server {
    listen 80;
    server_name workflows.devbg.us;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;

    server_name workflows.devbg.us;
    ssl_certificate /etc/ssl/private/bostongene.crt;
    ssl_certificate_key /etc/ssl/private/bostongene.key;
    charset utf-8;

    client_max_body_size 75M;

    location /media {
        alias /srv/workflows/media;
    }

    location /static {
        alias /srv/workflows/static;
    }

    location / {
        # We can talk to upstream django either via uwsgi or just http proxy

        # uwsgi:
        uwsgi_pass django;
        include /etc/nginx/uwsgi_params;


        # http proxy:
        #proxy_set_header Host $host;
        #proxy_pass http://django

    }
}

我在django和postgres容器之后运行nginx容器,参数如下:

代码语言:javascript
复制
docker run --name workflows-nginx --volumes-from workflows-db --volumes-from workflows-django --link workflows-django:workflows-django -p 80:80 -p 443:443 -d workflows-nginx

我的主机上的文件/etc/hosts如下所示:

代码语言:javascript
复制
127.0.0.1   localhost
127.0.0.1   workflows-db
127.0.0.1   workflows-django
127.0.0.1   workflows-nginx
127.0.0.1   workflows.devbg.us

对于如何排除这些问题,您有什么想法吗?Nginx error.log不包含这些错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-07 13:25:47

在码头枢纽的官方码头形象似乎被剥夺了nginx适配器。

所以,我只是从debian手工创建了自己的:jessie和voila。看起来uwsgi适配器在nginx-commonnginx-full Debian包中是可用的。

我的Dockerfile:

代码语言:javascript
复制
FROM debian:jessie

RUN apt-get update && apt-get install -y nginx \
                        ca-certificates \
                        gettext-base

COPY yoursite.conf /etc/nginx/sites-available/yoursite.conf
COPY yoursite.conf /etc/nginx/sites-enabled/yoursite.conf
COPY yoursite.crt /etc/ssl/private/
COPY yoursite.key /etc/ssl/private/

# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log

EXPOSE 80 443

CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36476509

复制
相关文章

相似问题

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