Docker--解决nginx的502 Bad Gateway
2026/9/3 12:44:37 网站建设 项目流程

原文网址:Docker--解决nginx的502 Bad Gateway_IT利刃出鞘的博客-CSDN博客

简介

本文介绍如何解决Docker部署nginx做反向代理时出现502报错的问题。

相关网址

Docker--网络的配置-CSDN博客

情景说明

  1. web程序和nginx都使用docker部署在Ubuntu
  2. web程序是8090端口
  3. 使用nginx做代理,将请求转发到web程序
  4. web程序和nginx已经使用docker compose connect进行了网络连接

nginx配置如下:

events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { # 所有IPV4的地址 listen 80; # 所有IPV6的地址 listen [::]:80; server_name 192.168.5.193; client_max_body_size 20m; charset utf-8; location / { proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://itthinktank; } } upstream itthinktank { server 127.0.0.1:8090; } }

问题复现

访问nginx时出现502页面:

原因分析

docker与docker之间的通信是通过虚拟网桥docker0实现的,需要使用docker0的ip表示本地网络,不能使用127.0.0.1。

解决方案

使用docker0的ip。

1.查看docker0的ip

命令:ifconfig

2.将127.0.0.1改为docker0的ip

events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { # 所有IPV4的地址 listen 80; # 所有IPV6的地址 listen [::]:80; server_name 192.168.5.193; client_max_body_size 20m; charset utf-8; location / { proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://itthinktank; } } upstream itthinktank { #server 127.0.0.1:8090; server 172.17.0.1:8090; } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询