如何配置公网Nginx与私有网络Payara间的HTTPS实现安全访问
问题解决方案
你完全不需要为私有网络中的Payara申请公网证书,当前遇到的不安全警告是配置规则和反向代理参数设置错误导致的,按以下步骤修改即可解决问题:
原理说明
公网Nginx做SSL反向代理的架构下,公网用户到Nginx的连接只需要Nginx配置合法公网证书即可,公网用户看到的证书是Nginx返回的Let's Encrypt证书,不会感知到内网Payara的证书状态。Nginx到内网Payara的通信属于私有网络内部流量,Payara用默认自签证书也不会影响公网侧的连接安全性。
第一步:修复端口映射规则
确认云服务器安全组/防火墙规则,仅开放公网4848端口到Nginx服务,不要将4848端口直接转发到Payara私有IP,确保公网访问4848端口的流量全部由Nginx处理。
第二步:修正Nginx反向代理配置
你当前的配置缺少对上游自签证书的校验关闭参数,会导致Nginx拒绝转发到Payara的请求,修改配置如下:
server { listen 4848 ssl; listen [::]:4848 ssl; ssl_certificate /etc/letsencrypt/live/sub.domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/sub.domain.com/privkey.pem; ssl_dhparam /etc/ssl/certs/dhparam.pem; server_name sub.domain.com; root /usr/share/nginx/html; location / { proxy_pass https://10.1.1.10:4848/; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-For $remote_addr; # 新增以下两行,关闭对Payara自签证书的校验 proxy_ssl_verify off; proxy_ssl_name $host; client_max_body_size 0; } }
修改后执行nginx -t校验配置无误,再执行systemctl reload nginx生效配置。
第三步:验证效果
清除浏览器缓存后访问https://sub.domain.com:4848,点击地址栏锁形图标查看证书,会显示为Let's Encrypt颁发的对应域名合法证书,不再有不安全警告。
额外说明
- 你用Certbot给Payara申请证书报错是正常的,Certbot的HTTP验证方式需要域名解析到当前服务器且80端口公网可访问,内网Payara不满足该条件,且完全不需要做这个操作。
- 你本地直接访问Payara的
https://localhost:4848出现不安全警告是正常现象,是Payara默认的Glassfish自签证书导致的,仅影响内网直接访问场景,不影响公网代理访问的安全性,如果需要内网访问也无警告,自行生成私有自签证书配置到Payara即可,无需申请公网CA证书。
内容的提问来源于stack exchange,提问作者General Zod
相关产品推荐
相关产品推荐

