如果尚未安装Nginx,请执行以下命令:
# 添加EPEL仓库
sudo yum install epel-release
# 安装Nginx
sudo yum install nginx
# 启动Nginx并设置开机启动
sudo systemctl start nginx
sudo systemctl enable nginx
sudo vi /etc/nginx/nginx.conf
或者为特定站点创建单独的配置文件(推荐方式):
sudo vi /etc/nginx/conf.d/reverse-proxy.conf
以下是一个基本的反向代理配置,将访问yourdomain.com
的请求转发到本地8080端口:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost: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;
}
}
upstream backend {
server backend1.example.com:8080 weight=5;
server backend2.example.com:8080;
server backend3.example.com:8080 backup;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
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_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
如果需要HTTPS支持:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/ssl/certs/yourdomain.crt;
ssl_certificate_key /etc/ssl/private/yourdomain.key;
location / {
proxy_pass http://localhost:8080;
# 其他代理设置同上
}
}
# HTTP重定向到HTTPS
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
sudo nginx -t
sudo systemctl reload nginx
如果启用了防火墙,需要开放相应端口:
# HTTP
sudo firewall-cmd --permanent --add-service=http
# HTTPS
sudo firewall-cmd --permanent --add-service=https
# 重新加载防火墙
sudo firewall-cmd --reload
502 Bad Gateway错误:
sudo tail -f /var/log/nginx/error.log
连接被拒绝:
sudo setsebool -P httpd_can_network_connect 1
性能问题:
负载均衡:
upstream
模块配置多个后端服务器缓存:
WebSocket支持:
访问控制:
希望这个指南能帮助您在CentOS上成功配置Nginx反向代理。根据您的具体需求调整配置参数。