连接被拒绝:Docker容器

时间:2016-04-19 17:52:09

标签: nginx https docker proxy reverse-proxy

我想在docker容器上使用nginx设置https反向代理ubuntu / centos。在浏览器端,我收到connection refused错误。而且,我在/var/log/nginx/access.log/var/log/nginx/error.log下看不到任何内容。

我可以再次在docker容器上使用nginx设置http反向代理。并且,在普通的ubuntu和centos虚拟机上使用nginx进行https反向代理。

可以理解为什么https在docker容器上使用nginx的反向代理无法从浏览器连接的原因。

如果需要任何其他信息,我可以为您提供。提前致谢。

供参考,请查看此sites-available/default文件。

    server {
      listen 80;
      server_name localhost;
      return 301 https://$host$request_uri;
    }

    server {
      listen 443 ssl;
      server_name localhost;

      ssl_certificate /etc/nginx/ssl/cert.pem;
      ssl_certificate_key /etc/nginx/ssl/cert.key;

      ssl on;
      ssl_session_cache  builtin:1000  shared:SSL:10m;
      ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
      ssl_prefer_server_ciphers on;

      location ~* /rabbitmq/(.*) {
        rewrite ^\/rabbitmq\/(.*)$ /$1 break;
        proxy_pass http://127.0.0.1:15672;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_redirect http:// https://;
      }

      location ~* /api/(.*) {
        rewrite ^/api/(.*)$ /$1 break;
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_redirect http:// https://;
      }
    }

谢谢, 内甚

2 个答案:

答案 0 :(得分:5)

看起来,我需要公开HTTP和HTTPS端口,因为nginx反向代理配置为仅服务于HTTPS流量。

docker run -d -p 80:80 -p 443:443 nginx-container

当我开始公开HTTPS端口时,它就可以了。

答案 1 :(得分:0)

您可能正在使用#34; bridge"网络模式(默认设置),这意味着您的 127.0.0.1 不符合您的想象。它会为运行 nginx 的容器使用虚拟化网络适配器。要快速修复它,您可以添加

--net=host
docker run 命令的

参数。还有其他选择,但我需要了解更多有关您的设置和要求的建议。