[SSL|Nginx] 开启SSL之后,解决访问不了域名带端口号的问题

MelodyJerry
2021-05-16 / 0 评论 / 47 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年10月16日,已超过101天没有更新,若内容或图片失效,请留言反馈。

问题描述

http://域名:2123 可以访问
开启SSL之后,带端口号就访问不了了
https://域名:2123 不可以访问
请问这是为什么呢,怎么才能让https://域名:2123也可以访问呢

解决

SSL方案:
1、NGINXSSL握手,其与TOMCAT之间仍旧HTTP协议(当NGINX和TOMCAT在同一相对安全的内网时这样做可以减少SSL握手次数)。NGINX的代理转发(proxy_redirect:反向替换proxy_pass或上游,如TOMCAT返回的URL),从HTTP的替换成HTTPS。可包括多条proxy_redirect配置。注意端口号如需要替换也要写入。
2、NGINX强制将接收到的HTTP请求rewrite为HTTPS
3、NGINX做优化方案,包括keepalive_timeout,开启ssl的session缓存。
4、TOMCAT和项目代码及配置文件(目前)不需要变更。
5、需要注意的是,程序从HTTP头部获取的信息,包括HTTPS协议,端口号,客户IP等,数据是正确的。但,若用request.getScheme();(HTTP or HTTPS)request.isSecure();(是否安全,boolean)request.getRequestURL().toString();(URL,带协议名)request.getRemoteAddr();(客户IP地址)等,获取则是错误的,request的信息有nginx转发到tomcat,并未做替换处理,因此获取到的都是nginx的信息,如有需要,在tomcat的server.xml设置一个valve。

0

评论 (0)

取消