Tim*_*win 24 reverse-proxy nginx docker
我有两个带nginx的docker容器.container1链接到container2.Docker然后在/ etc/hosts中添加一个条目,我将其输入到nginx配置中,如下所示:
server {
location ~ ^/some_url/(.*)$ {
proxy_pass http://container1/$1;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以从container2 ping 容器1,但是nginx无法解析它:
*1没有定义解析容器1的解析器
我怎样才能将请求委托给另一个docker容器?
Bru*_*ger 35
直接使用上游块而不是容器名称
upstream backend {
server container1;
}
server {
location ~ ^/some_url/(.*)$ {
proxy_pass http://backend/$1;
}
}
Run Code Online (Sandbox Code Playgroud)
这应该允许正常的名称解析,提供一种方法来轻松使用与nginx的docker链接.
Tho*_*aux 34
您可以使用嵌入式Docker DNS服务,如果启用,请检查您的容器解析器:
cat /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
应该:
nameserver 127.0.0.11
Run Code Online (Sandbox Code Playgroud)
使用此IP作为解析器:
server {
location ~ ^/some_url/(.*)$ {
resolver 127.0.0.11;
proxy_pass http://container1/$1;
} }
Run Code Online (Sandbox Code Playgroud)
你应该看看这个关于使用/ etc/hosts作为你的解析器的答案:使用/ etc/hosts作为解析器进行url重写
基本上,您的dns或解析器在查找期间不使用/ etc/hosts来解析名称,但您可以通过安装dnsmasq和使用127.0.0.1解析器来解决此问题.您可以直接在nginx配置中添加127.0.0.1作为解析器:
server {
location ~ ^/some_url/(.*)$ {
resolver 127.0.0.1;
proxy_pass http://container1/$1;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12914 次 |
| 最近记录: |