为什么配置https
背景:博客系统发布之后默认是http访问的。别人打开网站的时候,难免会遇到提示不安全的警告,这样体验不好。
比如这样:
给人的感觉就是,这是不是钓鱼的,好可怕啊~
马上关闭,不访问,这样会吓退一波沙雕网友。
现在全网都推荐s嘛,我们也不能拖后腿。至于为什么是安全什么的,自己去科普下。
配置https的前提
安全组记得开80和443端口! 我们需要去申请https证书(免费的)。土豪用户就更方便了,充钱还能让别人帮你一键部署,都不用看文章了。 腾讯云购买域名后可以申请一年的证书,阿里云也是,至于怎么申请,自己去控制台搞,很简单。 申请完成后。按照对应的平台,下载证书文件。
本文平台:Docker -> Nginx
下载完证书之后,是这样的,我修改了文件名字,名字是无关紧要的。
下载完成解压好了。docker和nginx都已经好了。(默认你之前已经上线了)
修改配置Docker文件
docker-compose.yml 要做如下修改
version: '2.0'
services:
nginx:
restart: always
image: nginx:1.19.2-alpine
container_name: sob-blog-nginx
ports:
- 80:80
- 443:443
volumes:
- "/home/aosp/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
- "/home/aosp/docker/nginx/wwwroot:/usr/share/nginx/wwwroot"
- "/home/aosp/docker/nginx/log:/var/log/nginx"
- "/home/aosp/docker/nginx/ssl:/etc/nginx/ssl"
- "/home/aosp/docker/nginx/ssl:/etc/nginx/ssl" 增加了这一行
当然上面的挂载路径可以替换成你自己的 需要到nginx下创建一个文件夹:ssl 把我们上面截图的2个文件,用工具上传到ssl里面
这一步修改很简单
修改Nginx配置文件
先上一个完整的配置
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
gzip on; #开启gzip
gzip_min_length 1k; #低于1kb的资源不压缩
gzip_comp_level 3; #压缩级别【1-9】,越大压缩率越高,同时消耗cpu资源也越多,建议设置在4左右。
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css; #需要压缩哪些响应类型的资源,多个空格隔开。不建议压缩图片,下面会讲为什么。
gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip
gzip_vary on; #是否添加“Vary: Accept-Encoding”响应头
#博客系统内网地址
upstream sob-blog-server{
server 172.25.186.15:2020 weight=1;
}
#门户,前端
upstream sob-blog-portal{
server 172.25.186.15:3000 weight=1;
}
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 443 ssl;
server_name www.debug.cn;# 这个是门户的访问域名,指向http://sob-blog-portal
root html;
index index.html index.htm;
ssl_certificate ssl/cert-file-name.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key ssl/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;
# 我的是阿里云的
ssl_prefer_server_ciphers on;
#门户地址
location ^~/portal/ {
proxy_pass http://sob-blog-server;
#以下是一些反向代理的配置可删除
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Server $host;
}
location ^~/user/ {
proxy_pass http://sob-blog-server;
#以下是一些反向代理的配置可删除
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Server $host;
}
location / {
proxy_pass http://sob-blog-portal;
#以下是一些反向代理的配置可删除
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Server $host;
}
}
server {
listen 80;
server_name mp.debug.cn;# 这个是管理中心的访问域名,指向wwwroot的内容
location ^~/user/ {
proxy_pass http://sob-blog-server;
#以下是一些反向代理的配置可删除
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Server $host;
}
location ^~/admin/ {
proxy_pass http://sob-blog-server;
#以下是一些反向代理的配置可删除
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Server $host;
}
location ^~/portal/ {
proxy_pass http://sob-blog-server;
#以下是一些反向代理的配置可删除
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Server $host;
}
location / {
root /usr/share/nginx/wwwroot/mp;
index index.html index.htm;
}
}
}
上面的配置意图:
80端口访问指向mp域名(管理端) https访问的时候走我们博客主页 开启gzip
基本上就是这些配置了,当然,如果你想修改其他端口也是可以的,listen 端口配置下就行了。
部署
上面已经修改了2个配置文件了。那现在需要删除nginx容器,重新部署
docker stop sob-blog-nginx
docker rm sob-blog-nginx
docker-compose up -d
//查看状态
docker ps
//如果无法启动查看log
docker logs sob-blog-nginx
安全组记得开80和443端口! 安全组记得开80和443端口! 安全组记得开80和443端口!
你的网站上绿锁了吗
传送门来试试