Nginx代理问题
我在一台服务器上运行2个容器。它们都是具有默认nginx映像的docker容器 我正在尝试使用Container1作为Container2的反向代理 集装箱1位于ip地址Nginx代理问题,nginx,reverse-proxy,Nginx,Reverse Proxy,我在一台服务器上运行2个容器。它们都是具有默认nginx映像的docker容器 我正在尝试使用Container1作为Container2的反向代理 集装箱1位于ip地址172.17.0.3 集装箱2位于ip地址172.17.0.4 当我使用curl Container1时,我会得到默认的Nginx主页。 我已经编辑了容器2的默认主页,因此它只是 HI,通过ip上的卷曲进行验证 在我的servers etc/hosts文件中,我添加了这一行 172.17.0.3 testapp.net
172.17.0.3
集装箱2位于ip地址172.17.0.4
当我使用curl Container1时,我会得到默认的Nginx主页。
我已经编辑了容器2的默认主页,因此它只是
HI
,通过ip上的卷曲进行验证
在我的servers etc/hosts文件中,我添加了这一行
172.17.0.3 testapp.net
我的Container1的/etc/nginx/conf.d/default.conf
是这样的吗
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 80;
server_name testapp.net;
location / {
proxy_pass http://172.17.0.4
}
}
当我执行
curl testapp.net
时,我会看到Container1的nginx(基本的hello nginx html文件)的主页,而不是指向Container2。为什么会这样 因此,您的问题是只需修改服务器上的/etc/hosts文件,而不是docker容器中的文件。容器有自己的文件系统和网络,这就是为什么您的修改不起作用
解决方案是在docker运行期间修改容器上的/etc/hosts
docker run --add-host testapp.net:172.17.0.3 your_image
您在尝试之前是否重新加载了nginx配置?是的,我重新加载了配置您是如何修改hosts文件的?在docker运行或构建过程中,/etc/hosts文件在我的服务器上,我在创建了2个容器后对其进行了修改。当我这样做时,我得到docker:`来自守护程序的错误响应:oci运行时错误:容器\u linux.go:247:启动容器进程导致“exec:\”--add host\“:在$PATH中找不到可执行文件”.`@pyjg您的docker版本是什么?docker版本17.03.0-ce,我的DokCarfile来自nginx:latest@pyjg抱歉,命令行顺序不正确。我修改了命令,你能再试一次吗?