• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

前言:

  我的后端项目是Java写的,用的Springboot框架。在部署服务器并配置https访问过程中,因为做了一些令人窒息的操作(事后发现),所以老是不能成功。

  不成功具体点说就是:域名地址可以正常访问(http/https均可),而部署在服务器上的API仍然只能通过http访问,通过https访问会显示不安全连接!

  通过提交工单,得到阿里云工作人员的帮助,他们给出了答案:

    

  然后我想,我好像知道是咋回事了呢。

  1. Springboot框架是内嵌有tomcat的!!我只是把项目打成Jar包放到了我配置在服务器上的tomcat的webapps下,然后手动通过命令来运行程序。所以我用的还是内嵌的tomcat。

  2. 我从阿里云上下载的SSL证书直接配置在服务器的tomcat上,所以它自然而然就跟我写的接口没啥关系了。

问题解决:

  先思考一个问题:到底准备用Springboot内嵌的tomcat还是用服务器上的外部tomcat?

  所以我无外乎两条路走:

    1. 内嵌tomcat:在Springboot项目中直接配置SSL证书,使其可以通过https被访问;项目依然以Jar形式在服务器被运行。

    2. 外部tomcat:剔除Springboot项目中的内嵌tomcat,修改项目相关配置,将其打成War包放到服务器的tomcat下加载运行。

实践:

  前提:

  1. 无论哪种方式,都需要先在服务器上下载安装好Java环境哦(⊙o⊙);
  2. 准备好SSL证书!阿里云买域名就送了免费的证书,下载tomcat对应的证书文件!

  方式一:使用内嵌tomcat部署程序 -- Jar包方式运行

    参考文章:部署到阿里云,配置https,springboot项目同时支持http和https请求,阿里云配置https

1. 将在阿里云下载好的SSL证书文件(.pfx格式)和密码文件,先放到src/main/resource文件夹下,再在项目下application.properties文件中配置证书信息。

 

2. 在Springboot启动程序中修改增加一些信息,如下:

 1 import org.apache.catalina.Context;
 2 import org.apache.catalina.connector.Connector;
 3 import org.apache.coyote.http11.Http11NioProtocol;
 4 import org.apache.tomcat.jni.File;
 5 import org.apache.tomcat.util.descriptor.web.SecurityCollection;
 6 import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
 7 import org.springframework.boot.SpringApplication;
 8 import org.springframework.boot.autoconfigure.SpringBootApplication;
 9 import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
10 import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
11 import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
12 import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
13 import org.springframework.context.annotation.Bean;
14 import org.springframework.core.io.ClassPathResource;
15 
16 @SpringBootApplication
17 public class HappyseatApplication implements EmbeddedServletContainerCustomizer {
18 
19     public static void main(String[] args) {
20         SpringApplication.run(HappyseatApplication.class, args);
21     }
22 
23     // 根据spring boot 1.5.X以下版本,添加这个!注意,版本不同添加的不一样↓↓↓↓
24     @Bean
25     //拦截所有请求
26     public EmbeddedServletContainerFactory servletContainer() {
27         TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
28         tomcat.addAdditionalTomcatConnectors(httpConnector()); // 添加http
29         return tomcat;
30     }
31     // 根据spring boot 1.5.X以下版本,添加这个!注意,版本不同添加此方法有所不同 ↑↑↑↑
32     
33     //配置http转https
34     @Bean
35     public Connector httpConnector() {
36         Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
37         connector.setScheme("http");
38         //Connector监听的http的端口号
39         connector.setPort(80);
40         connector.setSecure(false);
41         //监听到http的端口号后转向到的https的端口号
42         connector.setRedirectPort(443);
43         return connector;
44     }
45 
46     //这里设置默认端口为443,即https的,如果这里不设置,会https和http争夺80端口
47     @Override
48     public void customize(ConfigurableEmbeddedServletContainer container) {
49         container.setPort(443);
50     }
51 
52     
53 }

     

    3. 直接用 eclipse生成Jar包


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序学习笔记(2) 图片不显示问题总结发布时间:2022-07-18
下一篇:
Django微信小程序后台开发教程发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap