我正在尝试使用 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,
奥莱
答案1
回答:
将代理配置放在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
解释:
为了了解 nginx 在默认 Ubuntu 安装上的配置方式,我安装了它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/
因此不包括 来自的配置。