由于一些奇怪的项目要求,我试图将Ngnix配置为反向代理,它使用与传入请求中指定的相同主机名作为上游网关服务器。这应该起作用的原因是因为公共互联网DNS将指向我们的Ngnix服务器以获取给定的主机名,但是本地Ngnix服务器的resolve.conf将为本地网络上的计算机解析相同的主机名。
以下是我的尝试:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
location / {
resolver 127.0.0.1;
proxy_pass http://$host;
}
}
}
当我尝试发出请求时,我在错误日志中看到以下内容:
* 1028 example.test.com无法解析(3:未找到主机),客户端:XXX.XXX.XXX.XXX,服务器:,请求:“GET / HTTP / 1.1”,主机: “example.test.com”,推荐人:“http://foo.com/bar.htm”
当我从运行Ngnix的计算机上ping相同的主机名时,它会被正确解析并且可以访问。
我在这里缺少什么?
答案 0 :(得分:3)
我们发现问题与我们的DNS解析器不支持ipv6有关。我们在Ngnix配置文件中禁用了ipv6并且它工作正常。只需在dns解析器地址后添加“ipv6 = off”。
最终配置文件:
-fno-builtin
答案 1 :(得分:-1)
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name example.test.com;
location / {
proxy_pass http://192.168.x.x;
}
}
server {
listen 80;
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1;
}
}
}
修改强>
对不起,我不知道你需要动态配置。但我认为它还需要在PROXY SERVER中进行一些配置。