nginx-proxy 設定一個運行 nginx 和 docker-gen 的容器。 docker-gen 為 nginx 產生反向代理配置,並在容器啟動和停止時重新載入 nginx。
請參閱適用於 Docker 的自動化 Nginx 反向代理,以了解您可能想要使用它的原因。
運行它:
docker run --detach
--name nginx-proxy
--publish 80:80
--volume /var/run/docker.sock:/tmp/docker.sock:ro
nginxproxy/nginx-proxy:1.6
然後啟動您想要使用環境變數VIRTUAL_HOST=subdomain.yourdomain.com
進行代理程式的任何容器(此處為 nginx 容器)
docker run --detach
--name your-proxied-app
--env VIRTUAL_HOST=foo.bar.com
nginx
如果您的 DNS 設定為將foo.bar.com
解析到執行 nginx-proxy 的主機,則對http://foo.bar.com
的請求將被路由到VIRTUAL_HOST
環境變數設定為foo.bar.com
(本例為 your-proxied-app容器)。
被代理的容器必須:
Dockerfile
中使用EXPOSE
指令或使用docker run
或docker create
的--expose
標誌來公開要代理的連接埠。--net
標誌,則它將僅附加到預設橋接網路。這意味著它將無法連接到除網橋之外的網路上的容器。注意:不支援在VIRTUAL_HOST
中提供連接埠號碼,請根據您想要實現的目標查看虛擬連接埠或自訂外部 HTTP/HTTPS 連接埠。
nginx-proxy 鏡像有兩種版本。
該鏡像基於 nginx:mainline 鏡像,該鏡像本身基於 debian slim 鏡像。
docker pull nginxproxy/nginx-proxy:1.6
-alpine
後綴)該鏡像基於 nginx:alpine 鏡像。
docker pull nginxproxy/nginx-proxy:1.6-alpine
latest
和alpine
註解:不建議使用latest
( nginxproxy/nginx-proxy
、 nginxproxy/nginx-proxy:latest
)或alpine
( nginxproxy/nginx-proxy:alpine
)標籤進行生產設定。
這些標籤指向main
分支中的最新提交。它們不承擔任何穩定性承諾,並且使用它們可能會使您的 nginx-proxy 設定面臨對非向後相容版本(或具有重大更改的版本)進行不受控制的更新的風險。您應該始終明確指定要使用的版本,以確保更新影像時您的設定不會中斷。
請檢查文檔部分。