上下文
我在其他几个容器前面有一个nginx容器。其中之一运行在10001:3000上显示的node.js前端
我设法拼凑了部分有效的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;
#...
}
}
除此之外,我尝试的所有操作都遇到语法错误或其他错误。谁能提供一些简单的建议?
答案 0 :(得分: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