Nginx 反向代理是一种使用 Nginx 服务器来转发客户端请求到一个或多个后端服务器的配置。这种方式不仅可以提高性能,还能提供负载均衡、安全性和灵活性。以下是详细的 Nginx 反向代理配置步骤。
1. 安装 Nginx
如果你的系统尚未安装 Nginx,可以使用以下命令进行安装(以 Ubuntu 为例):
sudo apt update
sudo apt install nginx
2. 基本反向代理配置
假设你的后端应用程序运行在 IP 地址 192.168.1.10 的 8080 端口上,以下是设置 Nginx 作为反向代理的基本步骤。
编辑 Nginx 配置文件
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf,或者你可以在 /etc/nginx/sites-available/ 目录中创建一个新的配置文件。例如,你可以创建一个新的文件 myapp:
sudo nano /etc/nginx/sites-available/myapp
配置示例
在配置文件中,添加以下内容:
server {
listen 80; # 监听 80 端口
server_name yourdomain.com; # 替换为你的域名或服务器 IP
location / {
proxy_pass http://192.168.1.10:8080; # 将请求转发到后端服务
proxy_set_header Host $host; # 保留原始主机头
proxy_set_header X-Real-IP $remote_addr; # 传递真实客户端 IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 传递代理链中的所有 IP
proxy_set_header X-Forwarded-Proto $scheme; # 传递请求协议
}
}
3. 启用配置
将新配置文件链接到 sites-enabled 目录以启用它:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
4. 测试和重启 Nginx
在修改配置文件后,使用以下命令测试 Nginx 配置的正确性:
sudo nginx -t
如果没有错误,重启 Nginx 使配置生效:
sudo systemctl restart nginx
5. 允许外部访问 Nginx
确保防火墙允许外部访问 Nginx 服务器的 80 端口。使用 UFW 进行管理时,可以运行:
sudo ufw allow 'Nginx Full'
6. 验证反向代理
通过浏览器或使用 curl 命令测试反向代理是否配置成功。例如:
curl http://yourdomain.com/
如果配置正确,你应该能访问到后端服务的响应。
7. 配置 HTTPS 支持
为了确保数据传输的安全性,建议为 Nginx 配置 HTTPS。可以使用 Let's Encrypt 免费证书。
安装 Certbot
安装 Certbot 并获取 SSL 证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com # 将 yourdomain.com 替换为你的域名
更新 HTTPS 配置
一旦获取证书,可以更新 Nginx 配置以支持 HTTPS。例如:
server {
listen 80;
server_name yourdomain.com;
# 强制重定向到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl; # 监听 HTTPS
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; # SSL 证书路径
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # SSL 密钥路径
location / {
proxy_pass http://192.168.1.10: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;
}
}
8. 总结
通过上述步骤,你可以使用 Nginx 实现反向代理配置。这种配置不仅提高了应用程序的性能和安全性,还能让外部用户安全地访问后端服务。根据需要,Nginx 还支持更多功能,如负载均衡、缓存等,可以进一步优化配置以满足特定需求。