Nginx反向代理

发布于:2025-06-03 ⋅ 阅读:(25) ⋅ 点赞:(0)

配置步骤

  1. 确保内网服务可访问
    在Nginx服务器上测试内网服务是否可达(如 curl http://内网IP:端口)。

  2. 修改Nginx配置文件
    编辑Nginx配置文件(通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ 目录下)。

  3. 添加反向代理配置
    示例配置(将公网IP的80端口代理到内网服务 192.168.1.100:8080):

    server {
        listen 80;  # 监听公网IP的80端口(HTTP)
        server_name your-public-ip.com;  # 替换为公网IP或域名
    
        location / {
            proxy_pass http://192.168.1.100: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;
        }
    }
  4. 保存并测试配置

    sudo nginx -t        # 检查配置语法
    sudo systemctl reload nginx  # 重启Nginx生效

关键参数说明

配置项 作用
listen 80; 监听公网IP的80端口(HTTP),如需HTTPS改用 listen 443 ssl;
server_name 填写公网IP或域名(若无私用域名可直接用 _ 或省略)
proxy_pass 核心参数:指向内网服务的地址(格式:http://内网IP:端口
proxy_set_header 传递客户端真实IP和Host信息,避免内网服务丢失来源信息

高级场景配置

1. 通过域名区分多个内网服务
server {
    listen 80;
    server_name service1.your-domain.com;  # 域名1
    location / {
        proxy_pass http://192.168.1.101:8000;
    }
}

server {
    listen 80;
    server_name service2.your-domain.com;  # 域名2
    location / {
        proxy_pass http://192.168.1.102:9000;
    }
}
2. 启用HTTPS加密
server {
    listen 443 ssl;
    server_name your-domain.com;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/privkey.pem;

    location / {
        proxy_pass http://192.168.1.100:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;  # 告诉内网服务是HTTPS
    }
}
3. 路径转发(非根路径)
location /api/ {
    proxy_pass http://192.168.1.100:3000/;  # 注意结尾的斜杠(/)会移除/api前缀
}

网络与安全设置

  1. 防火墙开放端口

    sudo ufw allow 80/tcp    # 开放HTTP端口
    sudo ufw allow 443/tcp   # 开放HTTPS端口
  2. 路由器端口转发(如果Nginx不在公网)
    将公网IP的端口(如80)转发到运行Nginx的内网服务器IP和端口。

  3. 安全建议

    • 使用HTTPS加密流量(免费证书可通过Let's Encrypt获取)。

    • 限制访问IP:Nginx配置中通过 allow/deny 控制来源IP。

    • 内网服务本身配置防火墙,仅允许Nginx服务器访问。


验证访问

通过公网地址测试访问:

curl http://公网IP       # 或浏览器访问

若返回内网服务的响应内容,则配置成功。

💡 提示:若遇到502错误,检查内网服务是否运行、Nginx能否访问内网IP、内网防火墙是否放行Nginx服务器的IP。


网站公告

今日签到

点亮在社区的每一天
去签到