最近公司开发了一款小程序的应用,但是小程序为了保证数据安全,强制要求使用HTTPS,然后就不得不去配置了一下。

之前在php开发的项目上配置过一次,使用的是wdcp的控制台程序,配置起来很简单,不需要自己修改参数,按照教程将证书文件放进去就OK了。

这次是Java项目,而且用了SpringBoot,他内部集成了tomcat,没找到怎么修改tomcat参数的方法,而且看了SpringBoot配置起来好像也不是很方便。

因此就折中选择了Nginx做服务器,转发到Java项目,经过以前的几个项目,对Nginx 的基本用法和配置还是了然于胸的。

第一步,安装Nginx
服务器使用的是CentOS 7的版本,因此,直接选择了Nginx 的源码安装,在Nginx官网下载了最新的安装包,开始按照教程进行安装。

#下载后进行解压
tar -xvzf nginx-1.12.2.tar.gz
cd nginx-1.12.2
#执行以下命令 这一步很重要
./configure --with-http_ssl_moudle
#如果出现关于OpenSSL的错误,请安装openssl ,然后重复之前的操作
yum -y install openssl openssl-devel
#进行make 安装
make
make install

安装完成后可以启动Nginx进行测试,如果出现Nginx 的欢迎页面,则安装成功。

申请SSL证书
HTTPS需要SSL证书,SSL证书的申请可以在阿里云申请免费的证书。

配置SpringBoot
在SpringBoot 的application.properties文件中进行配置:

#如果使用IDEA进行开发的话,这些参数都有提示
server.tomcat.remote_ip_header=x-forwarded-for
server.tomcat.protocol_header=x-forwarded-proto
server.tomcat.port-header=X-Forwarded-Port
server.use-forward-headers=true
server.port=8080
#端口号不在使用80,可以改为其他的端口

配置Nginx
将申请的证书放在Nginx的安装目录下,我放在了 /usr/local/nginx/conf/cert/ 下,有两个文件,文件后缀分别为 .key和.pem

接下来在nginx.conf进行配置:

server {
listen 80;
server_name xx.example.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
#其实应该配置到这里就可以了,将80端口的访问转发到443端口
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://xx.example.com:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;

}
}

server {
listen 443;
server_name xx.example.com;
ssl on;
#配置证书的路径
ssl_certificate cert/1534768019908.pem;
ssl_certificate_key cert/1534768019908.key;
#ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
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;
location / {
#配置转发到8080端口
proxy_pass http://xx.example.com:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
}

上面配置完成后就可以启动Nginx 了,如果没有错误的话, 现在应该是可以进行访问了。

虽然实际步骤并不多,但是对于第一次来说,也走了很多弯路,比如安装Nginx 的时候没有安装http_ssl_moudel,然后配置完了无法启动,nginx报错提示:

nginx:[emerg] unknown directive "ssl"
1
配置80端口没有转发到443,仍旧以http访问。
总之,配置的时候会出现很多意想不到的问题,还是需要耐心,并且遇到问题不要慌,仔细查看错误提示,然后上网查询,基本你遇到的问题,网上都已经有了各种各样的解答,那就需要从中筛选自己需要的解决方案。
祝所有人都有一次配置成功。
---------------------
版权声明:本文为CSDN博主「已经死去的猫」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fenglin0429/article/details/81347634

SpringBoot + Nginx 配置HTTPS的一次经历的更多相关文章

  1. Nginx 配置 HTTPS(多域名)

    平常开发要求比较低, 依然在用 HTTP, 但到了微信小程序就不行了, 腾讯和苹果都对 API 提出了 HTTPS 的要求. 尤其是苹果, 不仅要求 HTTPS, 还要求 TLS 协议版本要在 1.2 ...

  2. Nginx配置Https

    1.申请证书: https://console.qcloud.com/ssl?utm_source=yingyongbao&utm_medium=ssl&utm_campaign=qc ...

  3. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  4. nginx配置https双向验证(ca机构证书+自签证书)

    nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...

  5. Nginx 配置https 服务

    一.HTTPS 服务 为什么需要HTTPS? 原因:HTTP不安全 1.传输数据被中间人盗用.信息泄露 2.数据内容劫持.篡改 HTTPS协议的实现 对传输内容进行加密以及身份验证 HTTPS加密校验 ...

  6. nginx配置https转发到tomcat(使用自签名的证书)

    一.使用openSSL生成自签名的证书 1.生成RSA私钥 命令:openssl genrsa -des3 -out server.key 1024 说明:生成rsa私钥,des3算法,1024强度, ...

  7. RedHat 6.6下安装nginx,配置HTTPS

    1.安装依赖包 yum -y install pcre-devel openssl-devel zlib-devel 2.下载nginx安装包到服务器上,当前使用版本nginx-1.15.5.tar. ...

  8. nginx 配置https并自签名证书

    2016-10-28 转载请注明出处:http://daodaoliang.com/ 作者: daodaoliang 版本: V1.0.1 邮箱: daodaoliang@yeah.net 参考链接: ...

  9. [记录]NGINX配置HTTPS性能优化方案一则

    NGINX配置HTTPS性能优化方案一则: 1)HSTS的合理使用 2)会话恢复的合理使用 3)Ocsp stapling的合理使用 4)TLS协议的合理配置 5)False Start的合理使用 6 ...

随机推荐

  1. 第02组 团队Git现场编程实战

    目录 1. 组员职责分工(2分) 2. github 的提交日志截图(1分) 3. 程序运行截图(3分) 4. 程序运行环境(1分) 5. GUI界面(5分) 6. 基础功能实现(10分) 7. 鼓励 ...

  2. centos上nginx转发tcp请求

    下载最新版nginx > wget http://nginx.org/download/nginx-1.17.1.tar.gz 解压缩 > tar zxvf nginx-1.17.1.ta ...

  3. ElasticSearch 线程池类型分析之 ExecutorScalingQueue

    ElasticSearch 线程池类型分析之 ExecutorScalingQueue 在ElasticSearch 线程池类型分析之SizeBlockingQueue这篇文章中分析了ES的fixed ...

  4. golang开始篇

    一   First Golang 1.1 需求 第一个程序hello.go,可以输出"hello golang" 1.2 开发步骤 开发这个程序时,我们的目录结构怎么处理(让自己或 ...

  5. excel 使用

    列于列拼接

  6. Java笔记_静态变量和实例变量的区别

    这里简单做一下笔记,区分Java全局变量里的静态变量与实例变量. 1.Java里的全局变量 首先了解Java里的全局变量,也叫成员变量. 特点: (1).一个类中既不在方法体内,也不在程序块内定义的变 ...

  7. FusionInsight大数据开发---MapReduce与YARN应用开发

    MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...

  8. 一个 Java 正则表达式例子

    今天在项目里看到用 Python 正则表达式的时候,用到 group,没有仔细看.正好学习 Java 正则表达式,对 group 多留意了一下. 上代码: import java.util.regex ...

  9. webbrowser实现一个进程一个代理的办法

    public static void RefreshIESettings(string strProxy) { const int INTERNET_OPTION_PROXY = 38; const ...

  10. RabbitMQ学习之Topics(5)

    上一节,我们讲了direct exchange,这节我们讲下topic exchange Topic exchange 发送到topic exchange的messages不可以有一个随意的routi ...