Nginx
在 Docker 上執行 NGINX 作為反向代理?
我正在嘗試使用 Docker 將 nginx 作為 Gogs 的反向代理執行。首先,我設置了 gogs,我可以看到它在以下位置呈現的網頁:
但是我想讓 NGINX 為我代理它,這樣我就可以將埠(3000)從 URL 中移除。我遵循的說明來自本教程的 NGINX 部分:
https://www.digitalocean.com/community/tutorials/how-to-set-up-gogs-on-ubuntu-14-04
為了讓它與 docker 一起工作,我創建了一個 nginx-data 卷,並將 nginx 配置文件放置在命名為它的捲中
gogs
。我的配置文件如下所示:server { listen 80; server_name 203.0.113.2; proxy_set_header X-Real-IP $remote_addr; # pass on real client IP location / { proxy_pass http://203.0.113.1:3000; } }
它位於
nginx-data
卷的根目錄。我像這樣啟動 nginx 容器:docker run --name docker-nginx -p 80:80 --net mk1net --ip 203.0.113.2 -v nginx-data:/etc/nginx/sites-enabled/ -d nginx
現在,當我訪問時,
203.0.113.2
我期待看到 Gogs 頁面,但我只是得到“歡迎使用 NGINX”頁面。想法?
TIA,
是
回答:
將代理配置放在一個名為
gogs.conf
docker 卷的文件中,並像這樣映射它:docker run --name docker-nginx -p 80:80 --net mk1net --ip 203.0.113.2 -v nginx-data:/etc/nginx/conf.d/ -d nginx
解釋:
要查看在預設 Ubuntu 安裝上如何配置 nginx,我安裝了它
sudo apt-get install nginx
並查看了配置文件/etc/nginx/nginx.conf
。它在配置的底部包括這兩行:include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;
所以我將其與 docker 容器的 nginx 配置進行了比較:
docker run --rm -it nginx /bin/ash root@9475f1693539: cat /etc/nginx/nginx.conf
此配置只有這一行:
include /etc/nginx/conf.d/*.conf;
因此
/etc/nginx/sites-enabled/
不包括來自的配置。