我有Nginx Poxy Manager和一个helloworld-http容器在同一个桥接网络中运行。
代理主机已经为某些域设置为访问代理服务器,并且它被配置为访问桥接网络内的hello服务器。
在运行代理的容器内,目标是可到达的,响应确认系统名称:
虽然为代理生成的nginx配置看起来也是正确的:/data/nginx/proxy_host/2.conf
server {
set $forward_scheme http;
set $server "hello";
set $port 80;
listen 80;
listen [::]:80;
server_name somedomainbeingused.com;
我发现这个question声明主机必须有一个index.html
,并确认测试服务器也会对此做出响应
我甚至检查了浏览器没有自动更新协议到https。
所有的星星似乎都在这里排成一行,我错过了什么?
编辑:经过进一步审查,我已经检查了日志,它似乎很好奇。
0000/00/00 00:00:00 [error] 97162#97162: *1575 hello could not be resolved (3: H
ost not found), client: 10.4.2.1, server: somedomainbeingused.com, request: "GET
/ HTTP/1.1", host: "somedomainbeingused.com"
这个错误没有意义的地方是我已经确认了主机(hello)可以从托管代理的容器(生成日志的地方)访问。
1条答案
按热度按时间xu3bshqb1#
所以,这不起作用的原因是因为Docker / Nerdctl中的网络工作方式。对于所有桥接网络,都有一个内部DNS解析器。在Docker中,这通常是
127.0.0.11
,但无论如何,它都会写入容器中的/etc/resolv.conf
,以便系统和服务使用此解析器。Ngingx会这样做,但是在Nerdctl中(这就是管理我的容器的东西)解析器只解析网络外部的dns………这在大多数情况下是透明的,因为Nerdctl会将完整的网络配置写入hosts文件中,所以当你使用curl
时,首先使用hosts而不是外部解析器,除非你是Nginx.........并且你只使用解析器。(解释的上下文)
因此,solution似乎是安装Dnsmasq从Nginx的主机读取并在
/etc/resolv.conf
中设置它。