温馨提示×

linux nginx如何设置反向代理

小樊
51
2026-09-29 03:12:28
栏目: 智能运维

在 Linux 上使用 Nginx 设置反向代理 是非常常见的操作,下面从基本概念 → 安装 → 配置示例 → 常用参数 → 测试与排错一步步说明。


一、什么是 Nginx 反向代理

反向代理是指: 客户端访问 Nginx,Nginx 再把请求转发到后端服务(如 Tomcat、Node.js、Python、Java 等)

用户 → Nginx(80/443) → 后端服务(127.0.0.1:8080)

二、安装 Nginx(如未安装)

CentOS / Rocky / Alma

yum install -y nginx
systemctl enable nginx
systemctl start nginx

Ubuntu / Debian

apt update
apt install -y nginx
systemctl enable nginx
systemctl start nginx

三、基础反向代理配置示例

示例:将 http://example.com 代理到本地 8080 端口

编辑配置文件:

vim /etc/nginx/conf.d/proxy.conf

内容如下:

server {
    listen 80;
    server_name example.com;

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

保存后测试并重启:

nginx -t
systemctl restart nginx

✅ 访问 http://example.com 就会转发到 127.0.0.1:8080


四、代理特定路径(常用)

location /api/ {
    proxy_pass http://127.0.0.1:9000/;
}

注意:

  • proxy_pass 末尾的 / 会影响路径拼接
  • /api/user → http://127.0.0.1:9000/user

五、HTTPS 反向代理(443)

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate     /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

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

六、常用优化参数(推荐)

proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
proxy_buffering on;

七、负载均衡(扩展)

upstream backend {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

八、常见问题排查

1. 502 Bad Gateway

  • 后端服务未启动
  • proxy_pass 地址错误
  • 防火墙/SELinux 阻止

2. 静态资源 404

  • 后端服务路径问题
  • location 配置错误

3. 查看错误日志

tail -f /var/log/nginx/error.log

九、总结

✅ 核心指令:

  • proxy_pass
  • proxy_set_header
  • upstream(负载均衡)

如果你有:

  • 具体后端(Node / Java / Docker)
  • 是否用 Docker
  • 是否需要 HTTPS / WebSocket

可以告诉我,我可以给你精准配置示例。

0 踩