Nginx 反向代理

2025-12-30 17:07:55 279

Nginx 反向代理

欢迎来到8455线路检测中心技术小课堂,每天分享一个技术小知识。

反向代理的本质:客户端访问 Nginx(代理服务器)的 80 端口 → Nginx 把请求转发到后端服务(比如跑在 8080 端口的 Web 服务)→ 后端处理请求后把结果返回给 Nginx → Nginx 再把结果返回给客户端。所以第一步必须先搭一个 “可访问的后端服务”,否则 Nginx 代理的是 “空地址”,测试会失败。


一、准备工作

1. 确认服务器基础环境

# 1. 确保Nginx已安装且运行(之前已装,验证一下)
systemctl status nginx  
# 显示
active (running) 即正常
# 2. 确保80、8080端口未被占用(后端用8080,代理用80)
netstat -tulpn | grep -E "80|8080"
# 若8080被占用,执行 kill -9 进程ID 杀掉,或换后端端口(比如8081)
# 3. 防火墙放行80、8080端口(客户端访问80,Nginx访问后端8080)
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=8080/tcp --permanentfirewall-cmd --reload

1.png


2. 安装后端服务依赖(选最简单的 Python 内置 Web 服务,无需额外装软件)

CentOS 默认带 Python,用它快速搭后端服务,零成本、易操作:

# 检查Python是否安装(几乎都有)
python3 --version  或 python --version(显示版本即正常)

注意:最好使用python3.8.18版本,版本过低则无法识别参数,导致反向代理进程无法执行


3. 准备后端测试文件(让后端有内容可返回)

# 1. 创建后端服务目录(和Nginx代理目录区分开)
mkdir -p /var/www/backend
# 2. 创建后端测试页面(访问时能看到“后端服务响应”)
echo ">这是后端服务(8080端口)的响应内容>" > /var/www/backend/index.html

image.png

PixPin_2025-12-30_15-01-56.png


二、搭建后端服务(关键步骤,让 8080 端口有服务)

用 Python 启动一个简易 Web 服务,作为反向代理的后端,命令如下:

# 后台启动后端服务,监听8080端口,根目录指向/var/www/backend
nohup python3 -m http.server 8080 --directory /var/www/backend &
# 解释:# nohup:让服务后台运行,关闭终端也不停止# 
python3 -m http.server 8080:启动Web服务,监听8080端口
# --directory:指定后端服务的根目录(放测试页面的地方)
# &:后台运行

2.png

验证后端服务是否可用(先确保后端自己能访问)

# 本地访问后端8080端口,能看到测试页面内容即正常
curl  
# 预期输出:1>这是后端服务(8080端口)的响应内容1>

3.png


三、配置 Nginx 反向代理

1. 创建代理配置文件(避免改默认配置)

vi /etc/nginx/conf.d/proxy.conf

2. 写入以下配置(替换成你的服务器 IP,比如 192.168.1.100

server {listen 80;  
# Nginx代理的入口端口
    server_name 你的服务器IP;  # 比如 192.168.1.100(填真实IP)
    location / {proxy_pass http://www.landui.com:8080;  # 转发到后端8080端口(本地后端填127.0.0.1)
    proxy_set_header Host $host;  # 传递客户端请求的主机名
    proxy_set_header X-Real-IP $remote_addr;  # 传递客户端真实IP给后端
    }
}

PixPin_2025-12-30_17-00-42.png

3. 保存退出 + 验证配置 + 重启 Nginx

# 按Esc → 输入:wq 保存退出
# 验证配置语法(关键,避免报错)nginx -t  
# 输出“test is successful”即正常
# 重启Nginx生效systemctl restart nginx

PixPin_2025-12-30_17-01-23.png


四、测试反向代理效果

1. 本地测试(服务器上执行)

curl http://你的服务器IP  # 比如 curl  
# 预期输出:>这是后端服务(8080端口)的响应内容>
# 说明:你访问的是Nginx的80端口,但返回的是后端8080端口的内容,代理成功!

2. 远程测试(本地浏览器访问)

打开浏览器,输入 http://你的服务器IP(比如 http://www.landui.com),能看到 “这是后端服务(8080 端口)的响应内容”,即反向代理配置成功。

PixPin_2025-12-30_17-05-01.png

五、注意事项

  1. 后端服务必须一直运行:如果关闭 Python 后端服务,代理会报错 502,可执行 ps -ef | grep python 查看后端进程,若没了重新启动即可;

  1. 端口不要冲突:确保 80(Nginx)、8080(后端)端口未被其他服务占用;

  1. 配置里的 IP 要填对

  1. 权限问题:Nginx 无需访问后端目录,只需能网络访问后端端口即可,所以不用给 Nginx 授权后端目录。


总结

  1. 反向代理实操核心:先搭可访问的后端服务(8080 端口),再配置 Nginx 转发 80 端口请求到后端;

  1. 验证步骤:先测后端自身可用,再测 Nginx 代理访问,两步都通才是真的成功;

  2. 关键配置:proxy_pass 指向后端地址,proxy_set_header 传递客户端真实 IP / 主机名。


    8455线路检测中心官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,8455线路检测中心整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。更多技术知识,8455线路检测中心期待与你一起探索。


    提交成功!非常感谢您的反馈,我们会继续努力做到更好!

    这条文档是否有帮助解决问题?

    非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

    在文档使用中是否遇到以下问题:
    XML 地图