搭建Nginx反向代理服务器

admin 2026-03-03 04:14:59 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档详细阐述了如何在Ubuntu环境下搭建Nginx反向代理服务器以增强企业内网安全。通过隐藏后端真实IP,结合防火墙端口映射与DNS解析,实现了对外安全发布内网服务。内容涵盖环境准备、Nginx安装与核心配置、防火墙策略设置及域名解析等步骤,并针对非标准端口访问导致的跳转异常提供了基于proxy_redirect指令的解决方案,具备较高的实操指导价值。 综合评分: 87 文章分类: 安全建设,解决方案,安全工具,实战经验


cover_image

搭建Nginx反向代理服务器

原创

simple安全团队 simple安全团队

simple安全团队

2026年2月27日 12:05 湖北

概述

企业内网有各式各样的服务器,经常需要开放端口到互联网提供服务,若直接通过出口防火墙进行端口转发,将服务器开放到互联网,是非常不安全的。

若使用Nginx作为反向代理服务器,则可以隐藏后端服务器的真实IP地址和端口,可以增强内网的安全性。


前置条件

1、一台已安装Ubuntu系统(建议20.04 LTS或更新版本)的服务器,该机器需能访问内网服务器

2、拥有该Ubuntu服务器的管理员权限(sudo)

3、拥有一个域名,可在阿里云或腾讯云进行购买,例如:simple.com

4、拥有一台出口防火墙

5、公司网络出口固定的公网IP,例如:118.118.118.118


方案总览

Nginx服务器(172.16.6.8)作为统一的安全入口和反向代理,部署在内网WAF之后(如果有WAF的话)。Nginx服务器的443端口通过出口防火墙端口映射为4443,80端口映射为8880。这里仅演示HTTP的情形。

互联网用户的访问请求将遵循以下路径:

1、用户发起请求:http://oa.simple.com:8880

2、DNS解析:域名oa.simple.com通过DNS解析到出口防火墙的公网IP:118.118.118.118

3、防火墙端口转发:出口防火墙配置地址转换策略,将到达公网IP:118.118.118.118:8880的流量,转发至内网Nginx服务器:172.16.6.8:80端口。

4、Nginx反向代理:Nginx服务器接收到请求后,根据HTTP请求头中的Host字段(即域名),将请求代理转发至对应的后端应用服务器:

1)oa.simple.com的请求转发至oa服务器:http://172.16.6.9:8080

2)ehr.simple.com的请求转发至ehr服务器:http://172.16.6.10:18080

5、响应返回:后端服务器处理请求后,生成的响应沿原路径返回给互联网用户。

拓扑图如下:


详细操作步骤

步骤一:在Ubuntu系统上安装Nginx

1、执行如下命令安装Nginx

sudo apt updatesudo apt install nginx -y

2、启动Nginx服务并设置开机自启

sudo systemctl start nginxsudo systemctl enable nginx

3、验证Nginx是否正常运行

sudo systemctl status nginx

4、配置系统防火墙,允许HTTP(80)和HTTPS(443)流量

sudo ufw allow ‘Nginx HTTP’sudo ufw allow ‘Nginx HTTPS’sudo ufw reload

5、安装完成后,可以在内网通过http://172.16.6.8 访问Nginx默认欢迎页面,以确认服务正常。

步骤二:编写Nginx反向代理核心配置文件

最佳实践是在/etc/nginx/sites-available/目录下创建配置文件,然后软链接到 /etc/nginx/sites-enabled/

1、创建并编辑配置文件

sudo vim /etc/nginx/sites-available/simple_com_proxy.conf

2、输入以下配置内容

注意:这个配置文件只需要server{}块,不需要http{},因为这个文件会被nginx.conf配置文件所调用。

server {    listen 80; # 监听HTTP 80端口,如需HTTPS需配置443端口和SSL证书    server_name oa.simple.com; # 指定匹配的域名
    location / {        # 将请求转发至内网OA服务器的IP和端口        proxy_pass http://172.16.6.9:8080; # 请替换为OA服务器的真实内网IP和端口
        # 以下头部信息至关重要,确保后端服务器能获取原始客户端信息        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;
        proxy_redirect http://oa.simple.com/ http://oa.simple.com:8880/;
        # 可选的超时与性能优化配置        proxy_connect_timeout 60s;        proxy_read_timeout 120s;        proxy_send_timeout 120s;    }}

ehr以及其他服务器同理,只需在这个配置文件中增加server{}块即可。

3、创建符号链接以启用站点

sudo ln -s /etc/nginx/sites-available/simple_com_proxy.conf /etc/nginx/sites-enabled/

4、测试配置文件语法是否正确

sudo nginx -t

5、重载nginx配置,使更改生效

sudo systemctl reload nginx

步骤三:配置出口防火墙进行端口转发

1、将到达公网IP:118.118.118.118:8880的流量,转发至内网Nginx服务器:172.16.6.8:80端口

步骤四:配置域名解析

1、登录自己购买的域名的控制台,新增DNS解析A记录

步骤五:测试与验证

1、直接浏览器访问:http://oa.simple.com:8880,能正常显示OA的登录页面或首页

2、查看nginx的访问成功日志/var/log/nginx/access.log,能看到记录

3、可能出现的问题

通过非标准端口(8880)访问Nginx反向代理服务时,页面跳转过程中端口号丢失,导致访问失败。

比如这里我们访问http://oa.simple.com:8880,如果没有正确配置,就会跳转到:http://oa.simple.com/seeyon/index.jsp,由于缺失了端口号,导致访问失败。

4、解决方案

使用proxy_redirect指令修正重定向

proxy_redirect http://oa.simple.com/ http://oa.simple.com:8880/;

将不带端口号的url修正为带端口号的url


END

查看更多精彩内容,关注simple安全团队


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:simple安全团队 simple安全团队 simple安全团队《搭建Nginx反向代理服务器》

MCP安全之MCP防御体系建设 网络安全文章

MCP安全之MCP防御体系建设

文章总结: 文档针对MCP生态风险提出防御体系方案。建议实施接入前审计与供应链校验,构建协议层结构与语义双重防火墙,确立工具调用校验与高危动作分级确认机制,强化
评论:0   参与:  0