通过项目部署剖析nginx proxy_pass的SSL和非SSL页面显示问题
若网站平台整体展示用的是https 协议,现在需要对网站功能模块进行新的开发,比如要新增一个报表功能report模块, 后端模块 report 程序dpp-report-1.0.0.jar 端口为15279 那如何进行站点配置 ?
解决办法:
(1)、方案1
1. dpp-report-1.0.0.jar应用中集成tomcat证书
根据服务器类型,选择证书格式,我们选择tomcat服务器类型的证书文件
然后把证书文件打包到dpp-report中 , 将证书文件上传到跟应用环境文件(例如application-prod.yml)在同一级别目录下,然后对dpp-report进行打包。
Springboot集成SSL证书,修改文件application-prod.yml 增加ssl功能配置项,代码参考:

2、 配置nginx
配置参考(部分配置展示),如下:

这样就能解决我们的问题。
需要注意的地方是: proxy_pass 反向代理的是https协议的SSL数据。此种情景模式下, 若 proxy_pass 走的是http协议 ,会提示:

(2)、方案2
网站整体走SSL加密显示, 后端模块 report 程序直接用http协议来显示 (不需要把证书文件集成到jar应用程序中),
Nginx 反向代理 proxy_pass 指向 http 协议的 report应用即可,这样更加简短。
NGINX 配置参考(部分配置展示)如下:

总结:
页面展示,遵循:
1. SSL HTTPS 协议下, 只能展示SSL HTTPS内容; 非SSL HTTP协议下,既能展示非SSL HTTP协议内容,也能显示SSL HTTPS协议的站点内容。
2. Nginx 反向代理 proxy_pass 后端服务器web协议既支持HTTP 也可以是 HTTPS , 至于能否代理成功,要遵循1(如上第1条阐述)。