Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
nginx配置反向代理+;docker&x2B;http到https重定向_Docker_Nginx - Fatal编程技术网

nginx配置反向代理+;docker&x2B;http到https重定向

nginx配置反向代理+;docker&x2B;http到https重定向,docker,nginx,Docker,Nginx,上下文 在其他几个容器前面有一个nginx容器。其中一个正在运行node.js前端,该前端显示在10001:3000上 我已经设法拼凑出一个部分工作的nginx配置,允许443上的SSL终止到10001上的容器 然而,我现在需要将所有流量重新定向到HTTPS,理想情况下阻止端口10001工作,某种http全覆盖 这是我的本地主机配置 user www-data; error_log /var/log/nginx/error.log warn; pid /run/nginx.p

上下文

在其他几个容器前面有一个nginx容器。其中一个正在运行node.js前端,该前端显示在10001:3000上

我已经设法拼凑出一个部分工作的nginx配置,允许443上的SSL终止到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 compose并将API和nginx添加到同一网桥网络,您可以向API容器公开端口,并删除ports指令。这将允许nginx与api容器通信,但api没有公开的开放端口

ports:
  - "8000:80"
expose:
  - "8000"
如上所述,ports指令向公众开放端口8000。Expose使8000仅在本地子网或网桥网络上可用。因此,在这种情况下,我的建议是删除ports部分。Expose也可以与run命令一起使用,但在这种情况下,您需要手动创建网桥网络

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