0
我正在用Docker構建一個多容器應用程序。 full environment is on github您應該重新創建它,但爲了方便起見,我在下面列出了我認爲是相關部分的內容。我nginx的Dockerfile是像這樣:使用dockerized nginx的反向代理
FROM ubuntu:14.04
MAINTAINER Garry Cairns
ENV REFRESHED_AT 2015-02-11
# get the nginx package and set it up
RUN ["apt-get", "update"]
RUN ["apt-get", "-y", "install", "nginx"]
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log
RUN ln -sf /dev/stderr /var/log/nginx/error.log
VOLUME ["/var/cache/nginx"]
EXPOSE 80 443
# load nginx conf
ADD ./site.conf /etc/nginx/sites-available/correspondence
RUN ["ln", "-s", "/etc/nginx/sites-available/correspondence", "/etc/nginx/sites-enabled/correspondence"]
CMD ["nginx", "-g", "daemon off;"]
以及添加的site.conf文件啓用網站,看起來像這樣:
# see http://serverfault.com/questions/577370/how-can-i-use-environment-variables-in-nginx-conf#comment730384_577370
upstream api {
server api_1:8000;
}
server {
location/{
proxy_pass http://api;
}
}
nginx的配置似乎在this answer發現非常相似,以至於我覺得這個方法應該沒問題。但是,當我在我的機器上訪問本地主機(無端口)或在生產環境中訪問域時,我只能訪問nginx歡迎頁面,不會進行轉發。
我可以連接到正在運行的nginx容器,並從應用程序容器使用http://api_1:8000
wget正確的結果,所以我很確定問題出在我的nginx安裝程序而不是我的Docker上,但是我無法解決這個問題。有沒有人在過去解決過這個問題?
'聽80,443;'是語法錯誤。 $ API_PORT_8000_TCP_ADDR定義在哪裏? – 2015-02-11 13:01:27
@AlexeyTen是的,我已經改變了只是'聽80;'當我在調試時,會相應地編輯問題。圖/ Docker在鏈接容器時自動填充這些環境變量。 – 2015-02-11 13:06:26
那麼,nginx不會在配置中使用這些變量,所以你的配置實際上是指空變量。你可以找到可用的這個問題http://serverfault.com/q/577370/211028 – 2015-02-11 13:12:05