我想将一个nginx容器作为所有网站和网络服务的主要入口点。我成功地运行了一个portainer容器,并且可以从互联网访问它。现在,我正在尝试访问由另一个nginx容器托管的静态网站,但是我失败了——当我访问URL时,出现错误。
502 Bad Gateway
我尝试将upstream部分添加到我的主要nginx配置中,但没有任何变化(每次更改配置后,我都会在容器内重载我的主要nginx服务)。
另一方面,如果可能的话,我希望避免添加upstream,因为生成多个不同的应用程序将需要为每个应用程序添加一个upstream - 这比我预期的要多得多。
这是我主要的nginx配置文件:
events {
worker_connections 1024;
}
http {
server {
listen 80;
location /portainer/ {
proxy_pass http://portainer:9000/;
}
location /helicon/ {
proxy_pass http://helicon:8001/;
}
}
}
以下是我启动主要的nginx容器的方法:
docker run -p 80:80 --name nginx -v /var/nginx/conf:/etc/nginx:ro --net=internal-net -d nginx
这是我的静态网站的 Nginx 配置文件:
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name helicon;
root /var/www/html/helicon;
error_log /var/log/nginx/localhost.error.log;
access_log /var/log/nginx/localhost.access.log;
}
}
这是用于创建和启动容器的docker-compose文件方式:
version: '3.5'
services:
helicon:
build: .
image: helicon
ports:
- "127.0.0.1:8001:80"
container_name: helicon
networks:
- internal-net
networks:
internal-net:
external: true
我正在使用internal-net
网络来使所有应用程序保持在同一网络中,而不是使用已弃用的--link
选项来运行docker
当我访问http://my.server.ip.address/helicon时,我收到502错误代码。然后我使用docker logs nginx
检查日志,发现有如下信息
2018/06/24 11:15:28 [error] 848#848: *466 connect() failed (111: Connection refused) while connecting to upstream, client: Y.Y.Y.Y, server: , request: "GET /helicon/ HTTP/1.1", upstream: "http://172.18.0.2:8001/", host: "X.X.X.X"
Helicon容器确实具有IP地址172.18.0.2。
我错过了什么?也许我的方法应该完全不同于使用网络?
此致敬礼,
Daniel