Vla*_*nov 6 dns nginx proxypass avahi vagrant
因此,我想proxy_pass在我的服务器上由 Avahi 控制的 .local 区域中对 vagrant 机器进行动态化。我有一个 nginx 虚拟主机配置:
server {
listen 80;
server_name ~^(?<subdomain>.+)\.example\.com$;
location / {
resolver 127.0.0.1 valid=30s;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://$subdomain-example.local;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
}
}
Run Code Online (Sandbox Code Playgroud)
Nginx 在 /var/log/nginx/error.log 中返回了一个错误:
2016/09/26 18:03:34 [error] 24401#24401:
*1 no resolver defined to resolve test-example.local,
client: 192.168.1.101,
server: ~^(?<subdomain>.+)\.example\.com$,
request: "GET / HTTP/1.1",
host: "test.example.com"
Run Code Online (Sandbox Code Playgroud)
但是,例如,如果我手动设置$subdomain为“测试”,它就可以工作并按照我真正想要的方式传递到 test-example.local 机器。
如何让它真正动态化?我应该在我的虚拟主机配置中更改什么?
小智 1
当 NGINX 启动或重新加载其配置时,它会查询 DNS 服务器来解析域名。NGINX 从操作系统配置文件 /etc/resolv.conf 中选择 DNS 服务器。当您在 proxy_pass 指令中使用变量指定域名时,NGINX 不会引用 /etc/resolv.conf。
您可以在 proxy_pass 指令中使用 IP 地址代替域名。
请阅读https://www.nginx.com/blog/dns-service-discovery-nginx-plus了解更多详细信息。
| 归档时间: |
|
| 查看次数: |
1028 次 |
| 最近记录: |