502基本上表示nginx无法完成本次转发 基本上就是下面两种情况
-
- 后台服务没有启动
-
- nginx配置文件有误
好家伙这不是废话?
等等别忙走,遇到错误不可怕可怕的是不去思考只会去网上看帖子,然后给人家骂一顿 然后并没有解决问题。
首先来看一下Nginx的配置文件:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /api{
proxy_pass http://127.0.0.1:9501;
# access_log "logs/test.log";
}
}
上面的配置文件看上去似乎没有任何问题。但是却忽略了一点:我们的Nginx是跑在docker容器中的。我们查看docker的日志:
sudo docker logs nginx(你的nginx容器name)
日志的部分内容:
很快啊 我啪地一下就醒悟了。我们的nginx无法与我们的应用程序通信。
docker 的网段 是以172.xxx.xxx.xxx
所以nginx的转发应该写成:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
if (!-e $request_filename) {
proxy_pass http://172.17.0.1:9501;
}
if (!-f $request_filename) {
proxy_pass http://172.17.0.1:9501;
}
}
}
终于可以睡觉了 good night ~