当前位置:首页 > 服务器技术 > 正文

Nginx反向代理入门指南(手把手教你配置后端服务器)

在现代 Web 开发和部署中,Nginx 反向代理 是一个非常常见且实用的技术。无论你是刚接触服务器配置的小白,还是有一定经验的开发者,掌握 Nginx 反向代理的原理和配置方法,都能帮助你更高效地管理网站流量、提升安全性并实现负载均衡

什么是反向代理?

简单来说,反向代理就是客户端请求先到达代理服务器(如 Nginx),再由代理服务器将请求转发给内部的后端服务器(比如运行 Node.js、Python Flask 或 Java Spring Boot 的应用)。用户并不知道后端服务器的存在,只与 Nginx 交互。

Nginx反向代理入门指南(手把手教你配置后端服务器) Nginx反向代理 后端服务器配置 Web服务器教程 负载均衡 第1张

为什么使用 Nginx 做反向代理?

  • 隐藏真实后端服务器,提高安全性
  • 支持 SSL/TLS 终止,简化 HTTPS 配置
  • 可实现缓存、压缩、限流等优化功能
  • 轻松实现多台后端服务器的负载均衡

准备工作

你需要:

  • 一台安装了 Linux 系统的服务器(如 Ubuntu、CentOS)
  • 已安装 Nginx(可通过 sudo apt install nginx 安装)
  • 一个正在运行的后端服务(例如监听在 localhost:3000 的 Node.js 应用)

配置 Nginx 反向代理

下面是一个最基础的反向代理配置示例。假设你的域名是 example.com,后端服务运行在本机的 3000 端口。

编辑 Nginx 配置文件(通常位于 /etc/nginx/sites-available/default 或新建一个站点配置):

server {    listen 80;    server_name example.com www.example.com;    location / {        proxy_pass http://127.0.0.1:3000;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Proto $scheme;    }}  

配置说明:

  • proxy_pass:指定后端服务器地址,这里是本地 3000 端口
  • proxy_set_header:传递原始请求头信息,让后端知道真实客户端 IP 和协议

测试与重启 Nginx

保存配置后,先检查语法是否正确:

sudo nginx -t  

如果显示 “syntax is ok”,就可以重新加载 Nginx:

sudo systemctl reload nginx  

现在访问 http://example.com,Nginx 就会把请求转发给你的后端服务!

进阶:配置多个后端(负载均衡)

如果你有多个后端服务器,可以这样配置负载均衡

upstream backend_servers {    server 192.168.1.10:3000;    server 192.168.1.11:3000;    server 192.168.1.12:3000;}server {    listen 80;    server_name example.com;    location / {        proxy_pass http://backend_servers;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Proto $scheme;    }}  

Nginx 默认使用轮询(round-robin)算法分配请求,也可以配置权重、IP 哈希等策略。

总结

通过本文,你应该已经掌握了如何使用 Nginx 配置反向代理来代理后端服务器。这项技术不仅适用于单机部署,也是构建高可用、高性能 Web 架构的基础。无论是个人项目还是企业级应用,Nginx 反向代理后端服务器配置Web服务器教程负载均衡 都是值得深入学习的核心技能。

动手试试吧!遇到问题可以在评论区留言,我们一起解决。