当前位置: 首页 > news >正文

Nginx反向代理

配置步骤

  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;  # 域名1location / {proxy_pass http://192.168.1.101:8000;}
}server {listen 80;server_name service2.your-domain.com;  # 域名2location / {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。

http://www.lqws.cn/news/65827.html

相关文章:

  • Pull Request Integration 拉取请求集成
  • Mybatis-Plus 学习
  • JMeter 直连数据库
  • 设备驱动与文件系统:01 I/O与显示器
  • linux信号详解
  • Java正则表达式完全指南
  • Java实现中文姓名转拼音生成用户信息并写入文件
  • Java函数式编程(上)
  • 象棋里的卧槽马、侧面虎、金钩马的方位与解析
  • OpenLayers 地图标注之图文标注
  • [Python] Python中的多重继承
  • 儿童节快乐,聊聊数字的规律和同余原理
  • STM32——CAN总线
  • 助力高校AI教学与科研:GpuGeek推出618算力支持活动
  • Launcher3体系化之路
  • python打卡day42
  • vscode 代理模式(agent mode),简单尝试一下。
  • 02.05、链表求和
  • debian12.9或ubuntu,vagrant离线安装插件vagrant-libvirt,20250601
  • Maven(黑马)
  • mybatis02
  • while循环判断数字位数
  • MobaXterm国内下载与安装使用教程
  • 【位运算】两整数之和(medium)
  • nt!MiDispatchFault函数分析之nt!MiCompleteProtoPteFault函数的作用
  • STM32F407寄存器操作(多通道单ADC+DMA)
  • Android第十一次面试补充篇
  • Python训练营打卡 Day42
  • leetcode0404. 左叶子之和-easy
  • 神经网络-Day42