2017-04-06 156 views
0

我在服務器上運行2個容器。它們都是具有默認nginx圖像的docker容器。Nginx代理問題

我正在嘗試使用Container1作爲Container2的反向代理。

Container1是IP地址爲172.17.0.3 container2的是IP地址172.17.0.4

當我蜷縮Container1我得到的默認主頁Nginx的。 我已經編輯了容器2的默認主頁,以便它只是 <p> HI </p>這是通過對捲曲進行驗證的IP。

在我的服務器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的主頁(基本你好nginx的html文件),並沒有定向到Container2。這是爲什麼發生?

+0

您是否在嘗試之前重新加載nginx配置? –

+0

是的,我沒有重新加載配置 – PYA

+0

你是如何修改hosts文件的?在碼頭運行或建立? –

回答

1

所以你的問題是你只是修改服務器上的/ etc/hosts文件,而不是在docker容器中。容器有自己的文件系統和自己的網絡,這就是爲什麼你的修改不起作用。

解決方法是在docker運行期間修改容器上的/ etc/hosts。

docker run --add-host testapp.net:172.17.0.3 your_image 
+0

當我這樣做時,我得到了docker:'來自守護進程的錯誤響應:oci運行時錯誤:container_linux.go:247:啓動容器進程「exec:\」 - add-host \「:在$ PATH中找不到可執行文件」。「 – PYA

+0

@pyjg什麼是您的docker版本? –

+0

Docker版本17.03.0-ce, – PYA