gpt4 book ai didi

docker - 带有Docker的动态Nginx代理

转载 作者:行者123 更新时间:2023-12-02 18:37:17 24 4
gpt4 key购买 nike

我坚持配置嵌入在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://$1$is_args$args;
}

似乎Docker无法解析第一个regex组提取的名称。

如果我在位置块中添加了resolver指令,它将开始工作。
      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选项创建容器,但仍然无法正常工作。

有想法吗?
谢谢,
b

最佳答案

Nginx尝试使用upstream指令解析domain_name:如果失败,它将尝试使用resolver将您的名字解析为DNS。因此,最后,您需要设置resolver指令。

关于docker - 带有Docker的动态Nginx代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53315717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com