用Nginx反代统一管理内网系统HTTPS,一个入口加密所有内部服务 📅 2026/7/18 21:52:18 之前写过一篇文章讲几十个内网系统的证书怎么统一管理那篇的重点是流程和制度——怎么监控、怎么续期、怎么分配责任。这次换一个完全不同的思路不需要给每个内网系统单独配证书用一台Nginx反向代理集中搞定。反向代理的思路传统做法是每个内网系统各自装一张IP证书各自监听443端口。OA一张、ERP一张、CRM一张、文件服务器一张……每张证书各自到期、各自续期、各自部署。反代的做法是一台Nginx服务器作为统一入口在这台服务器上配一张证书。所有内网系统通过这台Nginx访问Nginx负责SSL加密解密后端系统只需要走HTTP。流量走向用户 → HTTPS → Nginx反代配IP证书 → HTTP → OA系统192.168.1.10:8080用户 → HTTPS → Nginx反代配IP证书 → HTTP → ERP系统192.168.1.11:8080用户 → HTTPS → Nginx反代配IP证书 → HTTP → CRM系统192.168.1.12:8080用户看到的只有Nginx这一台服务器。后端每个系统不需要配HTTPS不需要装证书不需要处理SSL。所有HTTPS集中在Nginx这一层。Nginx配置示例假设你的内网有三个系统● OA192.168.1.10:8080● ERP192.168.1.11:8080● CRM192.168.1.12:8080Nginx反代的配置server {listen 443 ssl;server_name 192.168.1.100; # Nginx自己的内网IPssl_certificate /etc/ssl/certs/intranet.crt;ssl_certificate_key /etc/ssl/private/intranet.key;ssl_protocols TLSv1.2 TLSv1.3;location /oa {proxy_pass http://192.168.1.10:8080;proxy_set_header Host System.Management.Automation.Internal.Host.InternalHost;proxy_set_header X-Real-IP ;}location /erp {proxy_pass http://192.168.1.11:8080;proxy_set_header Host System.Management.Automation.Internal.Host.InternalHost;proxy_set_header X-Real-IP ;}location /crm {proxy_pass http://192.168.1.12:8080;proxy_set_header Host System.Management.Automation.Internal.Host.InternalHost;proxy_set_header X-Real-IP ;}}用户访问 https://192.168.1.100/oa → Nginx解密HTTPS → 转发到 192.168.1.10:8080 → 返回结果 → Nginx加密响应 → 返回给用户。这种方案的好处证书数量降到最低。不管后端有多少个系统只有Nginx这一台需要配证书。一张IP证书就够了。如果需要多IP访问用多IP证书也只需要一张。后端系统零改造。已有系统不需要为了HTTPS改任何配置。后端继续走HTTPNginx搞定加密。集中管理。证书到期、续期、替换都在Nginx这一台机器上操作不用登录每台服务器。性能更好。SSL加密解密是CPU密集型操作。集中到Nginx上后端服务器的CPU可以全部用在业务处理上。需要注意什么Nginx不能宕机。所有流量都经过NginxNginx挂了所有系统都访问不了。建议做主备冗余。后端到Nginx的链路是明文。Nginx到后端服务器之间走的是HTTP如果内网环境中有其他设备能监听这段链路数据仍然是明文。在内网可信环境中一般没问题但如果安全要求高可以在Nginx和后端之间也配HTTPS。注意路径冲突。多个系统的路径不能相同。如果一个系统的入口是/oa另一个就不能也用/oa。多端口方案如果不想用路径区分系统也可以用不同端口server {listen 443 ssl;server_name 192.168.1.100;ssl_certificate /etc/ssl/certs/intranet.crt;ssl_certificate_key /etc/ssl/private/intranet.key;}server {listen 8443 ssl;server_name 192.168.1.100;ssl_certificate /etc/ssl/certs/intranet.crt;ssl_certificate_key /etc/ssl/private/intranet.key;location / {proxy_pass http://192.168.1.11:8080;}}用户访问 https://192.168.1.100:443 到OAhttps://192.168.1.100:8443 到ERP。证书方案Nginx反代只需要一张证书。如果Nginx只有一个IP地址买一张单域名IP证书。如果Nginx绑定多个IP不同网段买一张多IP证书。