前言

问题描述:怎么让springboot部署在服务器上使用https协议方式访问我们的接口或者域名,目的是某些平台请求的是https协议,而不是https

部署环境:阿里云 centos7服务器,springboot项目打包的jar,nginx反向代理

注:部署前需要解决几个问题

1)需要配置springboot项目支持https协议,

2)需要配置阿里云的安全组,放行相关的端口,如本文中开放的8080和8081端口

3)配置nginx的nginx.conf文件做好反向代理

4)申请ssl文件,至于怎么申请ssl文件自行百度(注:因为springboot启动项目的时候使用的是tomcat,我们部署的时候需要nginx做好反向代理,所以这里面我们需要两个类型的ssl文件,即nginx下面的xxx.pem/xxx.key和tomcat下面的xxx.pfx/xxx.txt文件,xxx.txt里面保存的是密码)

(图1)

(图2)

5)把申请的ssl里面的pfx文件方向项目的根目录下,如下图

步骤:

1.配置本地项目xxx.yml文件,如下图

相关的代码如下

server:
servlet:
#配置访问的项目路径
context-path: /
#配置HTTPS访问端口
port: 8443
ssl:
enabled: true
key-store: xxx.pfx
key-store-password: 123456
#配置http访问端口
http:
port: 8080
2.配置启动项,即在启动项里面增加如下代码,这里可以配置通知支持http和https
import org.apache.catalina.connector.Connector;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean; @SpringBootApplication
@MapperScan(value = "xxx.mapper")
public class SitecloudApplication {
public static void main(String[] args) {
SpringApplication.run(SitecloudApplication.class, args);
}
// springboot2 写法
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
return tomcat;
} // 配置http
private Connector createStandardConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(8080);//nginx需要代理的端口,这里我直接写固定了,这里的端口是yml文件中的8080端口,你可以直接取yml文件的端口
return connector;
} }
3.配置阿里云的安全组,放行相关的端口

4.配置nginx

进入你安装的nginx目录里面xxx/conf/nginx.conf文件中,配置如下

#https支持
server {
listen 443 ssl;
server_name 你的域名不需要在前面加http;
ssl on;
ssl_certificate /ssl/xxx.pem;
ssl_certificate_key /ssl/xxx.key;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

location /images/{
root /usr/;
autoindex on;
}

location /app {
root html;
index index.html index.htm;
proxy_pass http://ip:8080;
}
}

server {
listen 80;
server_name 你的域名不需要在前面加http;

rewrite ^(.*)$ https://$host$1 permanent;
}

}

5.springboot本地打成xxx.jar文件,放入在linux中你新建的任何文件夹中

6.把你申请的ssl的xxx.pfx,xxx.pem,xxx.key文件放在和你的jar一个目录的地方

7.运行java -jar xxx.jar

8.在nginx的sbin文件夹下启动nginx

./nginx -s reload

./nginx -t

10.访问项目,直接用域名访问的方式如https://xxx.com:8443

访问http:xxx.8080

至此,项目运行成功,转载请留下出处

如何让springboot打包的项目部署在阿里云上使用https和http方式访问的更多相关文章

  1. 如何把php项目部署到阿里云服务器window server2012__含公网ip访问时jquery/ajax失效解决办法

    记一次蛋疼的折腾. 弄了一晚上最后发觉是360浏览器的问题,换个浏览器就好了.垃圾360用什么IE7文档模式.导致界面和功能失效. 建议大家测试的时候用firefox或者chrome. 项目部署到服务 ...

  2. spring boot 项目部署在阿里云上

    装jdk, 然后 nohup java -jar xxxx.jar> system.log 2>&1 & lsof -i:9999 kill -9 1234

  3. javaWeb项目部署到阿里云服务器步骤

    记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...

  4. javaWeb项目部署到阿里云服务器步骤 完整版

    记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...

  5. Java Web项目部署到阿里云服务器(ECS)

    本篇随笔只是记录博主第一次将自己的Java项目部署到阿里云服务器的大致过程,具体细节还请参考别的博文. 一.项目介绍 我做的项目是利用maven项目构建工具进行搭建基于SSM框架的代码共享管理系统,主 ...

  6. flask项目部署到阿里云 ubuntu16.04

    title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...

  7. 2018.11.7 关于将Web项目部署到阿里云服务器-5个步骤搞定

    将Eclipse导出的War包部署到阿里云服务器上,提供给移动端实时的访问 1. 先登录阿里云网站注册账号,选择服务器类型(我用的是 云服务器ECS), 如果你还是在读大学生可享受优惠价,最低好像是9 ...

  8. Django项目部署到阿里云服务器无法发送邮件,发送邮件超时问题解决

    前言 今天, 博主将写了好久的一个Django小项目尝试在阿里云部署上线,由于项目中需要发送邮件,博主调用了163邮箱接口,在本地测试邮件功能正常,可是上线后,邮件功能一直超时崩溃.在百度一番查资料后 ...

  9. 将web项目部署到阿里云服务器上

    一.用eclipse将写好的项目打成war包 1.右键点击项目,选择Export 选择打包之后的路径,点击Finsh. 2.购买阿里云服务器 按下图选择 3.设置云服务器防火墙 4.远程连接云服务器 ...

随机推荐

  1. c++小游戏——彩票

    #include <cstdlib> #include <iostream> #include <cstdio> #include <cmath> #i ...

  2. MyBatis一对多和多对多xml配置

    MyBatis一对多和多对多xml配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ma ...

  3. Linux系统安装jdk——.tar.gz版(old)

    这里简单地阐述一下rpm.deb.tar.gz的区别. rpm格式的软件包适用于基于Red Hat发行版的系统,如Red Hat Linux.SUSE.Fedora. deb格式的软件包则是适用于基于 ...

  4. K-Means(K均值)、GMM(高斯混合模型),通俗易懂,先收藏了!

    1. 聚类算法都是无监督学习吗? 什么是聚类算法?聚类是一种机器学习技术,它涉及到数据点的分组.给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组.理论上,同一组中的数据点应该具有相似 ...

  5. NPM - 检查并更新项目依赖的版本

    原文地址:https://acme.top/nodejs-npm-check-updates 前言 经常会遇到 package.json 中的库有更新,但是太多一个一个的来很费事,幸好有个工具 npm ...

  6. 【iOS】No suitable application records found

    昨天提交 Apple 审核时遇到这个问题,如图: 原来是还没在 iTunes Connect 创建 APP ... 一时着急大意了…… 后来想想还真是脑子一时没反应过来……

  7. java流压缩图片

    整理文档,搜刮出一个Java做图片压缩的代码,稍微整理精简一下做下分享.首先,要压缩的图片格式不能说动态图片,你可以使用bmp.png.gif等,至于压缩质量,可以通过BufferedImage来指定 ...

  8. 注解与AOP切面编程实现redis缓存与数据库查询的解耦

    一般缓存与数据库的配合使用是这样的. 1.查询缓存中是否有数据. 2.缓存中无数据,查询数据库. 3.把数据库数据插入到缓存中. 其实我们发现 1,3 都是固定的套路,只有2 是真正的业务代码.我们可 ...

  9. Java | Map排序,工具类改进

    package util; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; ...

  10. kubeproxy源码分析

    kubernetes离线安装包,仅需三步 kube-proxy源码解析 ipvs相对于iptables模式具备较高的性能与稳定性, 本文讲以此模式的源码解析为主,如果想去了解iptables模式的原理 ...