Nginx

在 Docker 上執行 NGINX 作為反向代理?

  • March 1, 2018

我正在嘗試使用 Docker 將 nginx 作為 Gogs 的反向代理執行。首先,我設置了 gogs,我可以看到它在以下位置呈現的網頁:

http://203.0.113.1:3000/

但是我想讓 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.confdocker 卷的文件中,並像這樣映射它:

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/不包括來自的配置。

引用自:https://unix.stackexchange.com/questions/287030