【问题标题】:Dynamic Nginx proxy with Docker使用 Docker 的动态 Nginx 代理
【发布时间】:2018-11-15 18:07:06
【问题描述】:

我坚持配置嵌入在 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;
   }

此配置有效。出现谷歌页面。所以看来 Docker 能够解析谷歌名称。

这个配置(我更感兴趣)不起作用:

   location ~* ^/proxy/(.*) {

      proxy_set_header Host            $host;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_redirect off;

      proxy_pass http://$1$is_args$args;
   }

Docker 似乎无法解析第一个正则表达式组提取的名称。

如果我在 location 块中添加解析器指令,它就会开始工作。

      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://$1$is_args$args;
   }

那么,区别在哪里?为什么需要解析器指令?为什么在第一种情况下(如果代理路径名是硬编码的)一切正常,而在另一种情况下却不行?主机resolv.conf文件是否应该在容器内部使用?

我还尝试通过 --dns 选项创建容器,但仍然无法正常工作。

想法? 谢谢, 脸书

【问题讨论】:

    标签: docker nginx reverse-proxy nginx-reverse-proxy


    【解决方案1】:

    Nginx 尝试使用upstream 指令解析域名:如果失败,它将尝试使用resolver 将您的名称解析为DNS。所以,最后,你需要设置resolver指令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      相关资源
      最近更新 更多