在 Docker 上运行 NGINX 作为反向代理?

在 Docker 上运行 NGINX 作为反向代理?

我正在尝试使用 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,

奥莱

答案1

回答:

将代理配置放在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

解释:

为了了解 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/因此不包括 来自的配置。

相关内容