Nginx代理问题

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

我在一台服务器上运行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
我的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抱歉,命令行顺序不正确。我修改了命令,你能再试一次吗?