维京博客升级https记录

本文涉及的产品
.cn 域名,1个 12个月
简介:

关于为什么升级https就不说了 一句话为了装逼

前期准备

证书

怎么买证书就不说了,穷人用的是阿里云提供的的塞门铁客的DV SSL免费版证书,阿里云每人可以申请20张DV SSL证书(一条200,括号内删除。。。一脸正经.gif)。

单域名

注意一个DV SSL只能验证一个域名,很坑的一点是这里说的是二级域名。即我申请的viking666.com 证书只能验证viking666.com 不能验证www.viking666.com也不能验证myblog.viking666.com(我这里不是为了打广告.一脸正经.gif)。

解决办法

  1. 买域名通配版的证书(假装很便宜.jpg)
  2. 多申请几个 反正一个阿里云账号能申请20个

我的方案

由于只是验证https的可用性,所以只申请了一个证书来验证viking666.com,别的域名如 www.viking666.com 和 myblog.viking666.com依旧采用http协议

下载证书和私钥

进入aliyun控制台-我的证书-下载,是一个zip文件里面包含一个xxx.pem和xxx.key文件类似于

旧的配置

upstream django_myblog {
    server unix:///www/myblog/log/myblog.sock; # for a file socket
    # server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}

server {
       listen 80;

       server_name viking666.com myblog.viking666.com www.viking666.com;
       charset     utf-8;
       # max upload size
       client_max_body_size 75M;   # adjust to taste
       access_log /www/myblog/log/nginx_access.log;
       error_log /www/myblog/log/nginx_error.log;
       location /media  {
            alias /www/myblog/media/;
        }

        location /static {
            alias /www/myblog/static/;
        }
       # Finally, send all non-media requests to the Django server.
       location / {
           uwsgi_pass  django_myblog;
           include     /www/myblog/uwsgi_params; # the uwsgi_params file you installed
    }

}

很简单的配置,具体的参数是什么意思 可以参考我的另外一篇部署博客 uwsgi+nginx部署django项目

升级

保留走http协议的部分

由于myblog.viking666.comwww.viking666.com还是走的http协议,所以旧的配置依旧是可用的,只要删掉server_name中的 viking666.com就可以了

http跳转到https

创建一个新的nginx配置文件,主体依旧采用旧的配置,但是跟上一节不同这里的server_name中只保留 viking666.com
还要加一句所以得都301重定向到 https中 return 301 https://$server_name$request_uri;
全部配置如下

server
{
    listen 80;

    server_name viking666.com;
    charset utf-8;
    # max upload size
    client_max_body_size 75M; # adjust to taste
    access_log /www/myblog/log/nginx_access.log;
    error_log /www/myblog/log/nginx_error.log;

    #告诉浏览器有效期内只准用 https 访问
    add_header Strict-Transport-Security max-age=15768000;
    #永久重定向到 https 站点
    return 301 https://$server_name$request_uri;

    location /media
    {
        alias /www/myblog/media/;
    }

    location /static
    {
        alias /www/myblog/static/;
    }
    # Finally, send all non-media requests to the Django server.
    location /
    {
        uwsgi_pass django_myblog;
        include /www/myblog/uwsgi_params; # the uwsgi_params file you installed
    }

}

https部分

创建一个新的nginx配置文件,里面的配置如下

server
{
    listen 443;

    server_name viking666.com;
    charset utf-8;
    # max upload size
    client_max_body_size 75M; # adjust to taste
    access_log /www/myblog/log/nginx_access.log;
    error_log /www/myblog/log/nginx_error.log;

    #告诉浏览器不要猜测mime类型
    add_header X-Content-Type-Options nosniff;

    ssl on;
    ssl_certificate /www/myblog/log/cert/214135044190984.pem;
    ssl_certificate_key /www/myblog/log/cert/214135044190984.key;
    # 缓存有效期
    ssl_session_timeout 60m;
    # 可选的加密算法,顺序很重要,越靠前的优先级越高.
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    # 安全链接可选的加密协议
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    #在 SSLv3 或 TLSv1 握手过程一般使用客户端的首选算法,如果启用下面的配置,则会使用服务器端的首选算法
    ssl_prefer_server_ciphers on;

    location /media
    {
        alias /www/myblog/media/;
    }

    location /static
    {
        alias /www/myblog/static/;
    }
    # Finally, send all non-media requests to the Django server.
    location /
    {
        uwsgi_pass django_myblog;
        include /www/myblog/uwsgi_params; # the uwsgi_params file you installed
    }

}

关于新加的配置已经注释的很仔细了,这里就不继续展开了。

踩的坑

nginx启动失败

修改好上述的nginx配置重启nginx一直启动失败,查看日志(systemctl status nginx.service -l)发现是报错Failed to start A high performance web server and a reverse proxy server这里注意到一点 nginx: [emerg] duplicate upstream "django_myblog" in /etc/nginx/sites-enabled/myblog_root.conf:2

感觉是这里的upstream冲突的,直接删掉其余的配置文件中的 upstream 只保留旧的那个文件中的(上面的我已删掉),重启搞定。

静态文件失败

重启完打开viking666.com会发现已经是https的了但是静态文件全部失败,百度一下就知道https不能使用http的静态文件格式,我的bootstrap jquery等都是用的CDN,这里可以把这些资源下载下来,但是有点治标不治本,也可以修改协议从http修改为https可以了。但是因为有一些二级域名还是采用的http的协议 所以这个方法也不是很好,这里有个方法就是不写具体的协议他就会使用网站本身的协议。
如在https的网站中引用http路径的js或css会导致不起作用,其形如:
<script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css"></script>
解决办法:
将http:去掉,改为
<script src="//cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css"></script>

参考文献

阿里云技术文档 这里在各个控制台里看,放不了链接
Nginx Http 重定向至 Https
https网站引用http路径的js和css失效解决办法

目录
相关文章
|
安全 JavaScript Java
记一次网站全站http升级为https的过程,websocket : ws升级为wss遇到的问题等
记一次网站全站http升级为https的过程,websocket : ws升级为wss遇到的问题等
1584 0
记一次网站全站http升级为https的过程,websocket : ws升级为wss遇到的问题等
|
5天前
|
安全 应用服务中间件 网络安全
简单比较 http https http2,我们要如何把http升级为https
【9月更文挑战第13天】本文对比了HTTP、HTTPS和HTTP/2的特点与适用场景。HTTP以明文传输,适合低安全要求的环境;HTTPS通过SSL/TLS加密,适用于电子商务等安全要求高的场景;HTTP/2采用二进制格式和多路复用,适合高性能Web应用。文章还详细介绍了将HTTP升级为HTTPS的步骤,包括申请和安装SSL证书、配置Web服务器、重定向HTTP流量到HTTPS以及测试HTTPS功能。升级到HTTPS可提高数据安全性和用户信任度。
35 13
|
4月前
|
域名解析 网络协议 安全
【域名解析DNS专栏】DNS-over-TLS与DNS-over-HTTPS:安全升级新标准
【5月更文挑战第26天】随着网络技术的发展,DNS协议面临安全挑战,DNS-over-TLS (DoT) 和 DNS-over-HTTPS (DoH) 作为解决方案出现,旨在通过加密增强隐私和安全。DoT使用TLS封装DNS查询,防止流量被窥探或篡改;DoH则利用HTTPS隐藏DNS查询。实施DoT需在客户端和服务器间建立TLS连接,DoH需DNS服务器支持HTTPS接口。这两种技术为网络安全提供支持,未来有望更广泛部署,提升网络环境的安全性。
339 0
|
4月前
|
安全 搜索推荐 前端开发
【https】如何让http升级成https
文章详细讲解了如何让HTTP到HTTPS的操作过程
185 0
【https】如何让http升级成https
|
11月前
|
Java 应用服务中间件 Linux
HTTPS && Tomcat && Servlet && 博客系统 && 软件测试的概念 && Linux
HTTPS && Tomcat && Servlet && 博客系统 && 软件测试的概念 && Linux
48 0
|
JSON Dubbo JavaScript
Dubbo Triple 协议重磅升级:支持通过 HTTP 连通 Web 与后端微服务
Dubbo Triple 协议重磅升级:支持通过 HTTP 连通 Web 与后端微服务
|
域名解析 运维 负载均衡
【运维知识进阶篇】Tomcat集群实战之部署zrlog博客(Tomcat服务安装+静态资源挂载NFS+Nginx负载均衡+HTTPS证书+Redis会话保持)
【运维知识进阶篇】Tomcat集群实战之部署zrlog博客(Tomcat服务安装+静态资源挂载NFS+Nginx负载均衡+HTTPS证书+Redis会话保持)
329 1
|
域名解析 负载均衡 JavaScript
升级 HTTP 至 HTTPS:使用 Nginx 反向代理
升级 HTTP 至 HTTPS:使用 Nginx 反向代理
275 0
|
JSON Dubbo JavaScript
Dubbo3 Triple 协议重磅升级:支持通过 HTTP 连通Web与后端微服务
阿里 [HSF2 框架已经完成到 Dubbo3 的全面升级](https://ata.atatech.org/articles/11000209827?spm=ata.25287382.0.0.26577536vUxJq6),阅读本文了解 Triple 协议工作原理。更多技术内容分享,请参见[官网博客](https://cn.dubbo.apache.org/zh-cn/blog/) ## 全新
388 0
Dubbo3 Triple 协议重磅升级:支持通过 HTTP 连通Web与后端微服务
|
安全 JavaScript Java
[※]记一次网站全站http升级为https的过程,websocket : ws升级为wss遇到的问题等
[※]记一次网站全站http升级为https的过程,websocket : ws升级为wss遇到的问题等
1304 0
[※]记一次网站全站http升级为https的过程,websocket : ws升级为wss遇到的问题等