我需要设置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容器代理请求。
答案 0 :(得分:0)
您的应用程序正在端口2368上运行,用户不需要直接访问该端口。因此,app
容器的端口不需要暴露。
您正确地创建了桥接网络并在其上创建了容器。
您需要从app
容器中删除端口映射,并将nginx-proxy
容器的端口映射从80:8080
更改为80:80
。
您还需要设置nginx-proxy
来将请求从端口80代理到app:2386
这样,用户在Docker运行的主机上点击80端口将被代理到您的应用程序。
答案 1 :(得分:0)
必须使用VIRTUAL_HOST
带有应用容器域名的env变量,才能将nginx代理请求发送到应用容器。这种方法不需要网络设置或端口转发。这是我想到的工作设置:
# app
docker run -d \
--name app \
-e VIRTUAL_HOST=mydomain.com \
app
# nginx
docker run -d -p 80:80 \
--name nginx-proxy \
jwilder/nginx-proxy