gpt4 book ai didi

nginx重定向到docker容器

转载 作者:行者123 更新时间:2023-12-04 17:16:26 27 4
gpt4 key购买 nike

在发布问题之前,我想知道是否有可能实现我想要的目标。

可以说,myserver.com运行带有nginx和Letencrypt的Docker容器。在同一台服务器上还有2个运行网站的Docker容器。

到目前为止,所有的重定向都可以,所以www.myserver.com转到docker 1,site2.myserver.com转到docker 2。

我希望所有通信都通过HTTPS运行,但这会带来麻烦。
所以,我的问题是:使用nginx和letencrypt的docker是否可以使用来吧来的证书连接到另一个docker?
对我来说,这似乎是某种中间人的“攻击”。
更加示意图:

浏览到http://site2.myserver.com-> nginx重定向到https://site2.myserver.com->在端口80上连接到容器2(192.168.0.10)。
或另一个选择:
浏览到http://site2.myserver.com-> nginx重定向到https://site2.myserver.com->连接到具有site2.myserver.com证书的端口443上的容器2(192.168.0.10)。

如果无法解决,那么解决方案是什么?将证书复制到Docker容器并使其运行https,以便将http请求重定向到该容器的https端口?

浏览到http://site2.myserver.com-> nginx转发请求->连接到具有site2.myserver.com证书的端口443上的容器2(192.168.0.10)。

谢谢,
毛茸茸的

最佳答案

据我了解,您的nginx反向代理与容器位于同一网络上,因此并不需要使用TLS保护它们之间的连接(因为这是一个专用网络,如果攻击者可以访问该网络,他将拥有访问服务器,以及所有未加密的数据)。

如果您绝对希望有效的证书来保护本地网络上的连接,则可以创建其他解析为本地IP的子域。然后,您将需要使用手动DNS选项来获取证书(这是certbot选项,您需要在其中手动输入 key 作为域的TXT条目)。

Nginx配置示例以将http重定向到https

server {
listen 80;

server_name example.com;
return 301 https://example.com/;
}
server{
listen 443 ssl http2;

server_name example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/fullchain.pem;

location / {
proxy_pass http://container:8080/;
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-Forwarded-Proto $scheme;
}

include tls.conf;
}

关于nginx重定向到docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41265396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com