企业级的Https&Nginx实战部署
01、Http和Https认识
HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议) 是一种透过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,**但利用SSL/TLS来加密数据包。**HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整。
02、Https的应用场景
1、当然考虑网站数据传递的安全性
2、基于前后端分离开发方式,如微信小程序,APP开发,IOS开发。等这些移动端应用开发,比如:IOS苹果软件开发,如果说你的软件要上家到苹果应用市场,那么你的服务器接口必须是:https。或者微信小程序:在真是的项目发布的,如果不是https的接口你也是通不过。
03、Https和Http监听的端口
http 监听的端口:80
https监听的端口:443
04、Https实现步骤
1、你必须要有个域名
2、并且要有个服务器 (提供ip)
3、并且服务器ip和你的域名要进行解析
4、免费领取一个ssl安全证书
5、把域名和ssl安全证书进行安全绑定授权
6、授权成功以后,然后把证书安装到nginx中
05、购买域名
万网:https://wanwang.aliyun.com/
购买成功后。进入阿里云【控制面板中】,找到【域名】配置,即可看到自己刚才购买的域名
06、域名备案
购买域名一定要备案才能进行使用,否则你是不能去解析和映射IP服务器,备案地址:
https://beian.aliyun.com/?spm=5176.100251.top-nav.dicp.22f14f15f2xBZ5
如果还不明白,多问问客服和提交工单
注意:备案需要域名提前做好实名认证,认证完后的2-3天才可备案。
07、购买阿里云服务器
地址:
https://ecs-buy.aliyun.com/wizard/#/prepay/cn-shanghai?fromDomain=true
如果是学习用的话推荐买共享型即可,企业的话推荐计算型,根据自己需要而定,系统推荐使用CentOS系统
购买完之后、即可在自己的控制台看见自己购买的服务器实例的IP
08、域名和IP的绑定
在控制台点击域名之后 选择需要的域名进行解析
一般建议:主域名 www.xxx.com , xxx.com
一般建议:API的域名,api.xxx.com
点击添加记录
一个域名 可以通过配置不同的二级域名去映射不同的服务器,这都是可以的。
09、开放服务端口
如果是单机部署多应用的话,开放80和443端口即可
这里和直接在linux通过命令去开放端口不同 需要在安全组里面配置
进去之后直接点击快速添加勾选你需要开放的端口
10、申请SSL证书
点击创建证书
11、安装nginx
nginx下载:http://nginx.org/en/download.html
01、创建nginx服务器目录
mkdir -p /www/yangzihao/nginx
cd /www/yangzihao/nginx
02、下载安装
wget http://nginx.org/download/nginx-1.20.1.tar.gz
03、安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
04、解压nginx
tar -zxvf nginx-1.20.1.tar.gz
05、创建临时目录
mkdir -p /var/temp/nginx
06、进入安装包目录
cd nginx-1.20.1
07、编译安装 (自定义配置)
./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-http_stub_status_module
记住:–with-http_ssl_module \ 尤为重要
安装以后的目录信息
08、make编译
make
09、安装
make install
10、进入sbin目录启动nginx
cd /usr/local/nginx/sbin
nginx 启动命令:
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx的进程
访问这个ip地址显示如下 说明nginx启动成功
./nginx -V 可显示nginx安装的一些信息
11、配置nginx的环境变量
vim /etc/profile
在文件的尾部追加
export NGINX_HOME=/usr/local/nginx export PATH=$NGINX_HOME/sbin:$PATH
重启配置文件
source /etc/profile
配置环境变量的好处
12、SSL证书的下载和上传
SSL证书的下载
SSl证书的上传
在nginx的conf目录下新建一个cert目录,并将这两个文件下载SSL证书文件上传到cert目录下
额外说明一下关于nginx
nginx 可以有多个配置文件 只需在主nginx.conf配置文件中将其他配置文件引用即可
改过配置文件记得从起 nginx -s reload
13、 nginx和SSL配置
直接可以看官方文档 写的即为详细 直接复制过来即可
连接地址
https://yundun.console.aliyun.com/?spm=5176.12818093.ProductAndService--ali--widget-home-product-recent.dre0.5adc16d00tXBQb&p=cas#/certExtend/free
#以下属性中,以ssl开头的属性表示与证书配置有关。 server { listen 443 ssl; #配置HTTPS的默认访问端口为443。 #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。 #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。 server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。 root html; index index.html index.htm; ssl_certificate cert/cert-file-name.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。 ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。 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; #表示使用的TLS协议的类型。 ssl_prefer_server_ciphers on; location / { root html; #站点目录。 index index.html index.htm; } }
如果需要请求http时自动跳转到https可以直接加上这个代码块
14、Nginx配置多个Https服务
每个域名有每个域名对应的SSL证书
在配置一个server代码块即可
域名访问测试 后面带有锁的标志说明是安全的
15、负载均衡项目部署
准备一个springboot项目打成包
分别跑三个端口进行测试
配置负载均衡
重启nginx
nginx -s reload
最终测试
16、后记
生活朗朗,万物可爱,人间值得,未来可期。加油!