【问题标题】:nginx config reverse proxy + docker + http to https redirectnginx 配置反向代理 + docker + http 到 https 重定向
【发布时间】:2019-07-08 21:31:21
【问题描述】:

上下文

我在其他几个容器前面有一个 nginx 容器。其中一个运行在 10001:3000 上的 node.js 前端

我已经设法拼凑出一个部分工作的 nginx 配置,允许 SSL 终止 443 到 10001 上的容器。

但是,我现在需要将所有流量重新定向到 HTTPS,并在理想情况下阻止端口 10001 工作,某种 http 包罗万象?

这是我的本地主机配置。

user  www-data;

error_log  /var/log/nginx/error.log warn;
pid        /run/nginx.pid;

worker_processes  2;


events {
    worker_connections  1024;
    multi_accept off;
}

stream {
    upstream stream_backend {
         server 172.17.0.1:10001;
        # server backend2.example.com:12345;
         #server backend3.example.com:12345;
    }

    server {
        listen                443 ssl;
        proxy_pass            stream_backend;

        ssl_certificate /etc/letsencrypt/live/localhost/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/localhost/fullchain.pem;
        ssl_protocols         SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers           HIGH:!aNULL:!MD5;
        ssl_session_cache     shared:SSL:20m;
        ssl_session_timeout   4h;
        ssl_handshake_timeout 30s;


        #...
    }
}

除了我尝试的所有内容之外,我还会遇到语法错误或其他一些错误。谁能提供一些简单的建议?

【问题讨论】:

    标签: docker nginx


    【解决方案1】:

    如果您使用 docker-compose 并将您的 API 和 nginx 添加到同一个桥接网络,您可以将端口公开给您的 api 容器,并删除 ports 指令。这将允许 nginx 与 api 容器通信,但不会有公开可用的 api 的开放端口。

    ports:
      - "8000:80"
    expose:
      - "8000"
    

    上面,ports 指令向公众开放了 8000 端口。 Expose 使 8000 仅在本地子网或桥接网络上可用。因此,在这种情况下,我的建议是删除端口部分。 Expose 也适用于 run 命令,但在这种情况下您需要手动创建桥接网络。

    我最近遇到了同样的问题。实际上,我有几个问题,但这是其中之一。有关更多详细信息,请参阅我的问题和答案。

    NGINX reverse proxy not working for .NET core webAPI running in Docker

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 2021-04-06
      • 2016-04-11
      • 2018-02-22
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多