Nginx如何支持HTTPS?手把手教会你每一步操作都贼简单,kafka和rabbitmq区别面试题
随着我们网站用户的增多,我们会逐渐意识到HTTPS加密的重要性。在不修改现有代码的情况下,要从HTTP升级到HTTPS,让Nginx支持HTTPS是个很好的选择。今天我们来讲下如何从Nginx入手,从HTTP升级到HTTPS,同时支持静态网站和SpringBoot应用,希望对大家有所帮助!
生成SSL自签名证书
虽然自签名证书浏览器认为并不是安全的,但是学习下SSL证书的生成还是很有必要的!
- 首先创建SSL证书私钥,期间需要输入两次用户名和密码,生成文件为
blog.key
;
openssl genrsa -des3 -out blog.key 2048
- 利用私钥生成一个不需要输入密码的密钥文件,生成文件为
blog_nopass.key
;
openssl rsa
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
-in blog.key -out blog_nopass.key
- 创建SSL证书签名请求文件,生成SSL证书时需要使用到,生成文件为
blog.csr
;
openssl req -new -key blog.key -out blog.csr
- 在生成过程中,我们需要输入一些信息,需要注意的是
Common Name
需要和网站域名一致;
Enter pass phrase for blog.key:
Country Name (2 letter code) [XX]:CN # 国家代码
State or Province Name (full name) []:jiangsu # 省份
Locality Name (eg, city) [Default City]:jiangsu # 城市
Organization Name (eg, company) [Default Company Ltd]:macrozheng # 机构名称
Organizational Unit Name (eg, section) []:dev # 单位名称
Common Name (eg, your name or your server’s hostname) []:blog.macrozheng.com # 网站域名
Email Address []:macrozheng@qq.com # 邮箱
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: # 私钥保护密码,可以不输入直接回车
An optional company name []: # 可选公司名称,可以不输入直接回车
- 生成SSL证书,有效期为365天,生成文件为
blog.crt
;
openssl x509 -req -days 365 -in blog.csr -signkey blog.key -out blog.crt
- 其实最终有用的文件是两个,一个是证书文件
blog.crt
,另一个是不需要输入密码的证书私钥文件blog_nopass.key
。
Nginx支持HTTPS
SSL证书生成好了,接下来我们就可以配置Nginx来支持HTTPS了!
安装Nginx
- 我们还是使用在Docker容器中安装Nginx的方式,先下载Nginx的Docker镜像;
docker pull nginx:1.10
- 下载完成后先运行一次Nginx,由于之后我们要把宿主机的Nginx配置文件映射到Docker容器中去,运行一次方便我们拷贝默认配置;
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-d nginx:1.10
- 运行成功后将容器中的Nginx配置目录拷贝到宿主机上去;
docker container cp nginx:/etc/nginx /mydata/nginx/
- 将宿主机上的
nginx
目录改名为conf
,要不然/mydata/nginx/nginx
这个配置文件目录看着有点别扭;
mv /mydata/nginx/nginx /mydata/nginx/conf
- 创建的Nginx容器复制完配置后就没用了,停止并删除容器;
docker stop nginx
docker rm nginx
- 使用Docker命令重新启动Nginx服务,需要映射好配置文件,由于我们要支持HTTPS,还需要开放
443
端口。
docker run -p 80:80 -p 443:443 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
配置支持HTTPS
- 将我们生成好的SSL证书和私钥拷贝到Nginx的
html/ssl
目录下;
cp blog_nopass.key /mydata/nginx/html/ssl/
cp blog.crt /mydata/nginx/html/ssl/
- 接下来我们需要给
blog.macrozheng.com
这个域名添加HTTPS支持,在/mydata/nginx/conf/conf.d/
目录下添加Nginx配置文件blog.conf
,配置文件内容如下;
server {
listen 80; # 同时支持HTTP
listen 443 ssl; # 添加HTTPS支持
server_name blog.macrozheng.com;
#SSL配置
ssl_certificate /usr/share/nginx/html/ssl/blog/blog.crt; # 配置证书
ssl_certificate_key /usr/share/nginx/html/ssl/blog/blog_nopass.key; # 配置证书私钥
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 配置SSL协议版本
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # 配置SSL加密算法
ssl_prefer_server_ciphers on; # 优先采取服务器算法
ssl_session_cache shared:SSL:10m; # 配置共享会话缓存大小
ssl_session_timeout 10m; # 配置会话超时时间
location / {
root /usr/share/nginx/html/www;
index index.html index.htm;
}
location /admin {
alias /usr/share/nginx/html/admin;
index index.html index.htm;
}
location /app {
alias /usr/share/nginx/html/app;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- 通过
HTTPS
访问blog.macrozheng.com
这个域名,由于我们使用的是自己签名的SSL证书,浏览器会提示您的连接不是私密连接
,点击继续前往可以通过HTTPS正常访问;
- 我们可以查看下证书的
颁发者
信息,可以发现正好是之前我们创建SSL证书签名请求文件时录入的信息;
- 接下来我们需要给
api.macrozheng.com
这个域名添加HTTPS支持,通过这个域名可以使用HTTPS访问我们的SpringBoot应用,api.crt
和api_nopass.key
文件需要自行生成,在/mydata/nginx/conf/conf.d/
目录下添加Nginx配置文件api.conf
,配置文件内容如下;
server {
listen 80; # 同时支持HTTP
listen 443 ssl; # 添加HTTPS支持
server_name api.macrozheng.com; #修改域名
#ssl配置
ssl_certificate /usr/share/nginx/html/ssl/api/api.crt; # 配置证书
ssl_certificate_key /usr/share/nginx/html/ssl/api/api_nopass.key; # 配置证书私钥
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 配置SSL协议版本 # 配置SSL加密算法
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on; # 优先采取服务器算法
ssl_session_cache shared:SSL:10m; # 配置共享会话缓存大小
ssl_session_timeout 10m; # 配置会话超时时间
Nginx如何支持HTTPS?手把手教会你每一步操作都贼简单,kafka和rabbitmq区别面试题相关推荐
- Nginx如何支持HTTPS?手把手教贼简单!
随着我们网站用户的增多,我们会逐渐意识到HTTPS加密的重要性.在不修改现有代码的情况下,要从HTTP升级到HTTPS,让Nginx支持HTTPS是个很好的选择.今天我们来讲下如何从Nginx入手,从 ...
- Nginx+FastCGI支持HTTPS部署过程详述
依赖的软件 nginx-1.13.5.tar.gz spawn-fcgi-1.6.4.tar.gz fcgi-2.4.0.tar.gz 编译安装 [root@OpenVPN-C ~]# tar xz ...
- centos yum方式安装nginx 并支持https
https://www.jianshu.com/p/f5376bba4a60 转载于:https://www.cnblogs.com/falcon-fei/p/11159741.html
- NginX下Openssl的构建和部署数字证书,支持HTTPS
一.安装 OpenSSL OpenSSL官网地址 wget https://www.openssl.org/source/openssl-1.0.2n.tar.gztar -zxvf openssl- ...
- LiveGBS国标GB/T28181流媒体平台支持实时录像相关接口及操作
LiveGBS国标GB/T28181流媒体平台支持实时录像相关接口及操作 1.几种录像的区别 2.实时录像使用 2.1.实时录像接口 2.1.1. 实时录像开始 2.1.2. 实时录像停止 2.1.3 ...
- 记录一次nginx升级,支持ipv4和ipv6访问https
项目要求,需要让现有网站项目支持https,并同时支持ipv6访问,经过分析,现在nginx版本较老,所以决定升级nignx,并且同步配置https和ipv6. 升级准备 服务器网络环境需要支持ipv ...
- 阿里云个人站点基于nginx代理搭建https协议支持
阿里云个人站点基于nginx代理搭建https协议支持 准备工作 购买免费个人版dv证书 配置nginx 开放防火墙端口 检测是否成功 准备工作 1.个人服务器 2.安装了ssl_moudle的ngi ...
- 在阿里云centos7.4上配置nginx免费的https证书,支持泛解析
在阿里云centos7.4上配置nginx免费的https证书,支持泛解析 一 原理说明: 使用acme.sh工具来生成证书,但为了方面采用的使用dns添加TXT记录验证方式,跟传统的webroot有 ...
- nginx使用ssl模块配置支持HTTPS访问
背景: 项目开发中用到了微信小程序,但是服务器配置URL必须是HTTPS,所以需要通过配置nginx的SSL模块来支持HTTPS访问,也就是说,要做一个网站域名为 XXX.com 要求通过HTTPS: ...
最新文章
- python stm32-python学习(一)
- 心疼啊今天在四季青买衣服的时候在试衣服的时候,竟然有个小偷把我的n73手机给偷去了,...
- 搜索运营有哪些玩法,你知道吗?
- 汇编语言(七)之字符串转大写
- 每日小记2017.2.22
- Spring Cloud Netflix Zuul 1.0 简化说明
- Eclipse-插件的安装之link文件方法
- Linux下Gcc生成和使用静态库和动态库详解(转)
- IE6给我网站开发带来的问题
- ARM中的RO、RW和ZI DATA说明
- Net设计模式实例系列文章总结
- MAF:Mutation Annotation Format格式简介
- 小程序Vant组件库的使用
- __stdcall的作用及今天的坑
- 【云计算】云计算六大优点简单说明
- 硬盘格式转换:MBR转换到GPT怎么转?
- BGP路由属性和选路
- 软件工程复习笔记——第六章 软件维护
- 为什么用vue,它解决了什么问题,如何使用它?
- 小波自适应阈值选取python_小波去噪阈值如何选取_小波阈值分析 - 全文