插件窝 干货文章 CentOS如何配置Nginx反向代理

CentOS如何配置Nginx反向代理

Nginx proxy 配置 server 721    来源:    2025-04-24

CentOS配置Nginx反向代理指南

前提条件

  • 已安装CentOS系统
  • 具有sudo或root权限
  • 已安装Nginx(若未安装,请先安装)

安装Nginx

如果尚未安装Nginx,请执行以下命令:

# 添加EPEL仓库
sudo yum install epel-release

# 安装Nginx
sudo yum install nginx

# 启动Nginx并设置开机启动
sudo systemctl start nginx
sudo systemctl enable nginx

配置反向代理

1. 编辑Nginx配置文件

sudo vi /etc/nginx/nginx.conf

或者为特定站点创建单独的配置文件(推荐方式):

sudo vi /etc/nginx/conf.d/reverse-proxy.conf

2. 基本反向代理配置示例

以下是一个基本的反向代理配置,将访问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;
    }
}

3. 更复杂的反向代理配置示例

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;
    }
}

4. SSL/TLS配置(可选)

如果需要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;
}

测试并应用配置

  1. 测试Nginx配置是否正确:
sudo nginx -t
  1. 如果测试通过,重新加载Nginx配置:
sudo systemctl reload nginx

防火墙设置

如果启用了防火墙,需要开放相应端口:

# HTTP
sudo firewall-cmd --permanent --add-service=http
# HTTPS
sudo firewall-cmd --permanent --add-service=https
# 重新加载防火墙
sudo firewall-cmd --reload

常见问题排查

  1. 502 Bad Gateway错误

    • 检查后端服务是否运行
    • 检查代理设置是否正确
    • 查看Nginx错误日志:sudo tail -f /var/log/nginx/error.log
  2. 连接被拒绝

    • 确保后端服务监听正确的IP和端口
    • 检查SELinux是否阻止连接:sudo setsebool -P httpd_can_network_connect 1
  3. 性能问题

    • 调整缓冲区大小
    • 启用keepalive连接
    • 考虑启用缓存

高级配置选项

  1. 负载均衡

    • 使用upstream模块配置多个后端服务器
    • 支持轮询、权重、IP哈希等算法
  2. 缓存

    • 配置代理缓存减少后端负载
  3. WebSocket支持

    • 需要特殊配置以支持WebSocket协议
  4. 访问控制

    • 基于IP或认证的限制访问

希望这个指南能帮助您在CentOS上成功配置Nginx反向代理。根据您的具体需求调整配置参数。