我需要设置 nginx-proxy 容器以将请求转发到包含我的应用程序的容器。我使用以下命令来启动容器:
# app
docker run -d -p 8080:2368 \
--name app \
app
# nginx
docker run -d -p 80:8080 \
--name nginx-proxy \
jwilder/nginx-proxy
但是当我尝试访问服务器上的 80 端口时,我得到了ERR_CONNECTION_REFUSED
。对我来说,很明显 nginx 容器转发的不是我想要的端口,因为在服务器端口 8080 上我可以访问该应用程序。我尝试使用network
如下方法:
# network
docker network create -d bridge net
# app
docker run -d -p 8080:2368 \
--name app \
--network net \
app
# nginx
docker run -d -p 80:8080 \
--name nginx-proxy \
--network net \
jwilder/nginx-proxy
但结果似乎是一样的。我需要了解如何从服务器端口 80 向我的应用程序发出 nginx 容器代理请求。
答案1
您正在本地系统的端口 80 上公开 nginx 容器中的端口 8080。但根据此容器的文档,nginx 侦听的是容器内的端口。
# nginx
docker run -d -p 80:80 \
--name nginx-proxy \
--network net \
jwilder/nginx-proxy
此外,您还需要配置 nginx 容器以连接到您的应用程序,例如如下所示(nginx 容器从其他容器上设置的环境变量中读取配置以构建其配置)
# network
docker network create -d bridge net
# app
docker run -d -p 8080:2368 \
--name app \
--network net \
-e VIRTUAL_HOST=app.local \
-e VIRTUAL_PORT=2368 \
app
# nginx
docker run -d -p 80:8080 \
--name nginx-proxy \
--network net \
-v /var/run/docker.sock:/tmp/docker.sock:ro \
jwilder/nginx-proxy