最近公司开发了一款小程序的应用,但是小程序为了保证数据安全,强制要求使用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. 游记&退役记

    划水两天. 给61级和62级都讲过课了,圆了一个梦吧. 62级好好学,61级更是. 老人进养老院了,小孩子也该从幼稚园出来了. 祝广一所有OIER,前程似锦,实力++,rp++. 奶一口zbq:NOI ...

  2. iptables 常用处理动作

    在iptables中,-j 参数用来指定要进行的处理动作,常用的处理动作包括:ACCEPT.REJECT.DROP.REDIRECT.MASQUERADE.LOG.DNAT.SNAT.MIRROR.Q ...

  3. 第02组 Alpha冲刺(2/6)

    队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 任务分配.进度监督 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们尽快完成各自的进度 还剩下哪些任务 ...

  4. App3种开发方式的优劣分析:原生、混合和H5

    App混合开发(英文名:Hybrid App),是指在开发一款App产品的时候为了提高效率.节省成本即利用了原生的开发技术还应用了HTML5开发技术,是原生和HTML5技术的混合应用.目前App的开发 ...

  5. 批量转换文件字符编码(GBK转UTF-8)

    今天收到一份代码,拖到IDE中发现乱码,看来下编码是GBK的(

  6. docker 学习操作记录 3

    记录3 [BEGIN] // :: Last :: from 192.168.114.1 root@coder:~# man addgroup ADDUSER() System Manager's M ...

  7. linux - 用户配置文件

    用户配文件: 1用户信息文件 /etc/passwd   2 影子文件 /etc/shadow  3  组信息文件 /etc/group 4 组密码文件 /etc/gshadow 1 用户信息文件 / ...

  8. scarpy设置日志打印级别和存储位置

    在settings.py中配置 日志级别设置 LOG_LEVEL = 'ERROR' # 当LOG_LEVEL设置为ERROR时,在进行日志打印时,只是打印ERROR级别的日志 日志存储设置 LOG_ ...

  9. Python基础之time、os模块

    1.时间模块 1)模块 python安装好之后,会有一些默认模块,我们称之为标准库,标准库中的模块python自带,无需安装. 除了标准库,还有一个第三方库,可以通过pip来安装,不同的库有不同的功能 ...

  10. dubbo循序渐进 - 使用Docker安装Nexus

    docker search nexus docker pull docker.io/sonatype/nexus3 mkdir -p /usr/local/nexus3/nexus-data /usr ...