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

前言:

  我的后端项目是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 @SpringBootApplication17 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     @Bean25     //拦截所有请求26     public EmbeddedServletContainerFactory servletContainer() {27         TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();28         tomcat.addAdditionalTomcatConnectors(httpConnector()); // 添加http29         return tomcat;30     }31     // 根据spring boot 1.5.X以下版本,添加这个!注意,版本不同添加此方法有所不同 ↑↑↑↑32     33     //配置http转https34     @Bean35     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     @Override48     public void customize(ConfigurableEmbeddedServletContainer container) {49         container.setPort(443);50     }51 52     53 }

     

    3. 直接用 eclipse生成Jar包

(0)

相关推荐

  • SpringBoot报错 Error parsing HTTP request header

    使用SpringToolSuite4执行Stringboot插入操作时,报请求头错误,具体信息如下 Error parsing HTTP request header Note: further oc ...

  • SpringBoot嵌入式容器的运行参数配置及HTTPS

    在SpringBoot项目中webServer默认支持的嵌入式容器是Tomcat,还可以切换到Jetty.Undertow.可以通过修改配置文件中的配置(简单)或者自定义配置类(专业化调优)方式来调整 ...

  • 微信小程序商城项目之多端版,前后端完全分离

    不装逼的程序员 今天 后端部分虽然是PHP的,但是我建议有研究精神的朋友完全可以重构成Java版本,自己搭建框架的能力也就锻炼出来了 新产品发布推荐 现已推出 [ 萤火商城多端版V2.0 ],新系统更 ...

  • 微信小程序后端开发(Java)笔记【Springboot+Mybatis】

    前言: 因为是第一次真正接触后端开发,从编码到部署服务器到上线,所以做个笔记,也供和我一样的开发小白一些参考. 一.前期工作:开发环境与工具: 1. 编程语言:Java    #笔者还没学PHP,只想 ...

  • 游戏小程序变现项目,小白轻松月入3w+

    游戏小程序变现项目,小白轻松月入3w+ 大家好,我是独孤求胜,公众号独孤思维.今天是原创日更100篇. 今天和一个运营公众号的朋友聊天,正巧聊到小程序变现,有些人做了几天,没看到流量,没看到收益就放弃 ...

  • 石桥码农:小程序 6 个 UI 框架体验感受

    文 / 李艺 2020年02月08日 开发微信小程序离不开一个称手的 UI 框架, 有了这个可以事半功倍, 特别对于程序员出身不太会美工的开发者, 尤其有用 这些框架,单个组件拿出来展示,可能效果都很 ...

  • 微信影视小程序赚钱项目,是如何做到月入过万的!

    有做程序员的,问我有没有下班做的兼职. 大概想了想,其实方法挺多的. 重在思维上. 程序员和普通人相比本身就具备一定的门槛,需要懂得代码,算法,还有框架等东西,所以只要稍微用点心去深耕一个领域,都会有 ...

  • 强烈推荐星标31k的小程序资源项目,资源很全!

    什么是小程序? 小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用 . (小程序短视频介绍,建议wifi下观看) 之前刚开发 ...

  • typescript编写微信小程序-创建项目

    创建项目 在微信开发者工具创建项目,在语言中选择 TypeScript 改造项目 编辑 package.json 文件,修改 miniprogram-api-typings 和 typescript ...

  • 软件开发[物联网] - [STM32/51|JavaWeb|微信小程序] - 1.项目简介

    创立原因 最近接了个项目,刚好基本符合个人技术栈,刚好闲着没事,又刚好有那么点兴趣. 简介 首先我们来了解下物联网开发的三层架构: 感知层:由各种传感器构成,包括温湿度传感器.二维码标签.RFID标签 ...

  • 基于阿里云服务器Linux系统部署JavaWeb项目

    前段时间刚完成一个服务器评测JavaWeb项目,想着怎么部署到服务器评测上,边学边做,花了点时间终于成功部署了,这里总结记录一下过程中所遇到的问题及解决方法.之所以选择阿里云,考虑到它是使用用户最多也 ...