云服务器上 Nginx 反向代理搭建指南:从入门到实践
摘要:# 云服务器上 Nginx 反向代理搭建指南:从入门到实践 在现代网络架构中,反向代理是提升服务性能、安全性和灵活性的关键技术之一。Nginx 作为一款高性能的 Web 服务器和反向代理服务器,以其轻量、稳定、高并发的特点,成为众多开发者的首选。本文将详…
在现代网络架构中,反向代理是提升服务性能、安全性和灵活性的关键技术之一。Nginx 作为一款高性能的 Web 服务器和反向代理服务器,以其轻量、稳定、高并发的特点,成为众多开发者的首选。本文将详细介绍如何在云服务器上搭建 Nginx 反向代理服务,帮助你快速掌握这一实用技能。
一、反向代理的基本概念
反向代理(Reverse Proxy)是指代理服务器接收客户端的请求,然后将请求转发给内部网络中的目标服务器,并将目标服务器的响应返回给客户端。与正向代理(如 VPN)不同,反向代理对外隐藏了真实服务器的信息,客户端甚至不知道自己在与代理服务器交互。
反向代理的核心作用:
- 负载均衡:将请求分发到多个后端服务器,提升系统的并发处理能力。
- 缓存加速:缓存静态资源或动态内容,减少后端服务器的压力,提高响应速度。
- 安全防护:隐藏后端服务器的真实 IP,防止直接攻击;支持 HTTPS 加密,提升数据传输安全性。
- 统一入口:通过一个域名或 IP 地址访问多个服务,简化客户端访问流程。
二、云服务器准备
1. 选择合适的云服务器
根据业务需求选择云服务器,常见的云服务商有阿里云、腾讯云、AWS、华为云等。建议选择 Linux 系统(如 CentOS、Ubuntu),因为 Nginx 在 Linux 上的兼容性和性能更优。

2. 服务器配置要求
- CPU:至少 1 核(入门级),推荐 2 核及以上(高并发场景)。
- 内存:至少 1GB(基础配置),推荐 2GB 及以上(运行多个服务时)。
- 带宽:根据业务流量选择,建议 1Mbps 以上(公网访问)。
- 操作系统:CentOS 7/8、Ubuntu 18.04/20.04 等。
3. 服务器初始化
- 登录服务器(使用 SSH 工具,如 PuTTY、Xshell)。
-
更新系统软件包:
# CentOS 系统 yum update -y # Ubuntu 系统 apt update && apt upgrade -y -
关闭防火墙或开放必要端口(如 80、443):
# CentOS 7 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # Ubuntu 关闭防火墙 ufw disable(注意:生产环境建议配置防火墙规则,而非直接关闭)
三、安装 Nginx
1. 安装 Nginx
CentOS 系统:
# 安装 EPEL 源(如果未安装)
yum install epel-release -y
# 安装 Nginx
yum install nginx -y
# 启动 Nginx 并设置开机自启
systemctl start nginx
systemctl enable nginx
Ubuntu 系统:
# 安装 Nginx
apt install nginx -y
# 启动 Nginx 并设置开机自启
systemctl start nginx
systemctl enable nginx
2. 验证 Nginx 安装
在浏览器中输入服务器的公网 IP,如果看到 Nginx 的默认欢迎页面,说明安装成功。
四、配置反向代理
Nginx 的配置文件位于 /etc/nginx/nginx.conf(主配置文件)和 /etc/nginx/conf.d/ 目录下的子配置文件(推荐使用子配置文件管理不同服务)。
1. 基本反向代理配置
假设我们有一个后端服务运行在 127.0.0.1:8080,现在需要通过 Nginx 反向代理到 http://your-domain.com。
步骤 1:创建配置文件
vi /etc/nginx/conf.d/reverse-proxy.conf
步骤 2:添加配置内容
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或公网 IP
location / {
proxy_pass http://127.0.0.1:8080; # 后端服务地址
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;
}
}
步骤 3:检查配置并重启 Nginx
# 检查配置文件是否正确
nginx -t
# 重启 Nginx 使配置生效
systemctl restart nginx
此时,访问 http://your-domain.com 就会被代理到 127.0.0.1:8080。
2. 多服务反向代理配置
如果需要代理多个服务,可以通过不同的 location 或域名来区分。例如:
- 访问
http://your-domain.com/app1代理到127.0.0.1:8081 - 访问
http://your-domain.com/app2代理到127.0.0.1:8082
配置文件示例:
server {
listen 80;
server_name your-domain.com;
location /app1 {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /app2 {
proxy_pass http://127.0.0.1:8082;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
3. HTTPS 反向代理配置
为了提升安全性,建议配置 HTTPS。需要先申请 SSL 证书(如 Let's Encrypt 免费证书)。
步骤 1:安装 Certbot(Let's Encrypt 客户端)
# CentOS 系统
yum install certbot python3-certbot-nginx -y
# Ubuntu 系统
apt install certbot python3-certbot-nginx -y
步骤 2:申请 SSL 证书
certbot --nginx -d your-domain.com
按照提示完成证书申请,Certbot 会自动配置 Nginx 的 HTTPS 相关设置。
步骤 3:验证 HTTPS
访问 https://your-domain.com,如果浏览器显示安全锁图标,说明 HTTPS 配置成功。
五、高级配置
1. 负载均衡配置
如果后端有多个服务器,可以通过 Nginx 实现负载均衡。配置示例:

upstream backend_servers {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Nginx 默认使用轮询(Round Robin)算法分配请求,还支持权重(weight)、IP 哈希(ip_hash)等算法。
2. 缓存配置
通过 Nginx 缓存静态资源,减少后端服务器压力。配置示例:
http {
# 定义缓存目录
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_cache my_cache;
proxy_cache_valid 200 304 10m; # 200和304响应缓存10分钟
proxy_cache_valid any 1m; # 其他响应缓存1分钟
proxy_cache_key "$host$request_uri";
}
}
}
3. 日志配置
Nginx 的日志默认位于 /var/log/nginx/ 目录下,包括 access.log(访问日志)和 error.log(错误日志)。可以通过配置自定义日志格式:
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
}
六、常见问题及解决方法
1. Nginx 启动失败
- 检查配置文件是否有语法错误:
nginx -t。 - 查看错误日志:
tail -f /var/log/nginx/error.log。 - 确保端口未被占用:
netstat -tulpn | grep 80。
2. 反向代理后后端服务无法获取真实 IP
- 确保配置了
proxy_set_header X-Real-IP $remote_addr;和proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;。 - 后端服务需要读取这些请求头来获取真实 IP。
3. HTTPS 证书过期
- 使用 Certbot 自动续期:
certbot renew。 - 可以设置定时任务自动续期:
crontab -e,添加0 0 1 * * certbot renew --quiet。
七、总结
通过本文的步骤,你已经掌握了在云服务器上搭建 Nginx 反向代理的方法,包括基本配置、多服务代理、HTTPS 配置、负载均衡和缓存等高级功能。Nginx 反向代理不仅能提升服务性能和安全性,还能为复杂的网络架构提供灵活的解决方案。在实际应用中,可以根据业务需求进一步优化配置,例如调整缓存策略、负载均衡算法等,以达到最佳效果。
希望本文对你有所帮助,祝你在云服务器上的 Nginx 反向代理搭建顺利!

