阿里云上,Ubuntu下配置Nginx,在tomcat中加了https协议就不可以了
问题
阿里云上,Ubuntu服务器,本来部署的是tomcat,并且使用了https 协议。后来为了静态资源分离集成了 nginx,nginx代理跳转到 tomcat。刚开始直接访问http 网址发现,图片会经过nginx 的代码。但是访问https 网址发现,图片还是只走了apache 。
分析
因为tomcat 配置了ssl证书,而非 nginx配置ssl。所以当浏览器访问域名的时候,域名解析的时候,直接跳转到https服务了,并没有经过nginx的代理。
tomcat的端口是8080, nginx的端口是80,单单这一点似乎不影响通过域名访问,奇怪。看来如果域名解析使用了ssl证书,使用到证书的服务器即使端口号不是80,也能够直接通过地址访问,不要加端口号。
下图是域名解析列表,第一条记录就是申请ssl证书时使用到的。
解决办法
1、删除tomcat上配置的ssl 证书,给nginx 添加ssl证书,重新安装部署
可以参看阿里云的文档:
SSL数字证书Tomcat配置部署指导
https://help.aliyun.com/video_detail/54217.htmlSSL数字证书Nginx配置部署指导
nginx安装证书:https://help.aliyun.com/video_detail/54216.html
具体的操作是在控制台-安全(云盾)-CA证书服务中
2、此时直接使用http 访问会报“400 Bad Request”错
此时需要 nginx 将http请求转发到https请求
所以还需添加配置:
#让http请求重定向到https请求
error_page 497 https://uri?$args;
原创文章,欢迎转载,转载请注明出处!
把每一件简单的事情做好,就是不简单;把每一件平凡的事情做好,就是不平凡!相信自己,创造奇迹~~
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
· 记一次 C# 平台调用中因非托管 union 类型导致的内存访问越界
· [EF Core]聊聊“复合”属性
· 那些被推迟的 C# 14 特性及其背后的故事
· 我最喜欢的 C# 14 新特性
· 程序员究竟要不要写文章
· 遭遇疯狂 cc 攻击的一个周末
· 【EF Core】聊聊“复合”属性
· 美丽而脆弱的天体运动:当C#遇见宇宙混沌
· GPT‑5 重磅发布
· C#/.NET/.NET Core技术前沿周刊 | 第 49 期(2025年8.1-8.10)
2012-12-15 ZOJ 1921 Rock, Scissors, Paper(模拟题)