Docker 的动态 Nginx 代理
Dynamic Nginx proxy with Docker
我坚持配置嵌入在 Docker 容器中的 Nginx 实例,它应该为未启用的 CORS 网站实施动态反向代理。
我原以为这是一项简单的任务,但在某些情况下它不起作用。这是一个工作 位置块:
location ~* ^/proxy/(.*) {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass https://google.com;
}
此配置有效。 google 页面出现。所以似乎 Docker 能够解析 google 名称。
此配置(我更感兴趣)不起作用:
location ~* ^/proxy/(.*) {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass http://$is_args$args;
}
似乎 Docker 无法解析第一个正则表达式组提取的名称。
如果我在位置块中添加解析器指令,它就会开始工作。
location ~* ^/proxy/(.*) {
resolver 192.168.31.2;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass http://$is_args$args;
}
所以,区别在哪里?为什么需要解析器指令?为什么在第一种情况下(如果代理路径名是硬编码的)一切正常,而在另一种情况下却不行?主机 resolv.conf 文件应该在容器本身内部使用吗?
我也尝试通过 --dns 选项创建容器,但仍然无法正常工作。
想法?
谢谢,
Fb
Nginx 尝试使用 upstream
指令解析 domain_name:如果失败,它将尝试使用 resolver
将您的名称解析为 DNS。所以,最后,你需要设置 resolver
指令。
我坚持配置嵌入在 Docker 容器中的 Nginx 实例,它应该为未启用的 CORS 网站实施动态反向代理。
我原以为这是一项简单的任务,但在某些情况下它不起作用。这是一个工作 位置块:
location ~* ^/proxy/(.*) {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass https://google.com;
}
此配置有效。 google 页面出现。所以似乎 Docker 能够解析 google 名称。
此配置(我更感兴趣)不起作用:
location ~* ^/proxy/(.*) {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass http://$is_args$args;
}
似乎 Docker 无法解析第一个正则表达式组提取的名称。
如果我在位置块中添加解析器指令,它就会开始工作。
location ~* ^/proxy/(.*) {
resolver 192.168.31.2;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
proxy_pass http://$is_args$args;
}
所以,区别在哪里?为什么需要解析器指令?为什么在第一种情况下(如果代理路径名是硬编码的)一切正常,而在另一种情况下却不行?主机 resolv.conf 文件应该在容器本身内部使用吗?
我也尝试通过 --dns 选项创建容器,但仍然无法正常工作。
想法? 谢谢, Fb
Nginx 尝试使用 upstream
指令解析 domain_name:如果失败,它将尝试使用 resolver
将您的名称解析为 DNS。所以,最后,你需要设置 resolver
指令。