时间:2023-02-09 00:39:01 | 来源:建站知识
时间:2023-02-09 00:39:01 来源:建站知识
大学的时候买了 windliang.cc 的域名当做自己的博客,然后一直使用的是github 的 pages 服务。最近国内访问 github 有些慢,想把博客迁移到阿里云的服务器上。nginx 成功放到阿里云上了,参考 云服务器搭建网站全过程。.cc 域名有一个最大的问题,现在不能备案了,不能备案的话就不能放到国内服务器上。于是前段时间又买了一个 windliang.wang 域名,备案成功后,按照之前的总结,很快就放到了阿里云上。.cc 域名的时候,重新定向到 .wang 域名上。js 进行重定向,另一种就是在后端通过 nginx 。.cc 域名没有备案,所以我们需要在国外的服务器上放一个 html 来实现重定向。github 的 pages 服务。需要的index.html 写法如下。<script> var domain = "windliang.wang"; //得到 https://windliang.cc/XXXXX var src = window.location.href; //得到 https var prtc = src.substring(0, src.indexOf(':')); //得到 /XXXXX //indexOf 的第二个参数是开始查找的位置 var target = src.substring(src.indexOf('/', src.indexOf(':') + 3)); //组合在一起 //https://windliang.wang/XXXXX window.location.href = prtc + "://" + domain + target;</script>比较好理解,上边也都注释了。index.html 然后放到 github 仓库里。Settings 里开启 pages 服务,并且绑定我们的域名。DNS 里面添加一个 CNAME 记录,将域名解析到 wind-liang.github.io。windliang.cc 的任意地址,就会自动跳转到 windliang.wang 了。nginx 方式的重定向。windliang.cc 的时候会有一个 404 的状态码,这里我也不知道是为什么,如果谁知道的话可以告诉我。Debian 。http 的重定向很简单,只需要在 /etc/nginx/conf.d 文件夹下新建一个配置文件。vim /etc/nginx/conf.d/windliang.cc.conf然后添加下边的内容。server { listen 80; server_name windliang.cc; return 301 https://windliang.wang$request_uri;}这样的话就可以了。但因为监听的是 80 端口,所以只会对 http://windliang.cc 进行重定向,对于 https 的链接就无能为力了。windliang.cc 申请一个 SSL 证书,从而完成 https 的跳转。Let's Encrypt由互联网安全研究小组(缩写ISRG)提供服务。主要赞助商包括电子前哨基金会、Mozilla基金会、Akamai以及思科。2015年4月9日,ISRG与Linux基金会宣布合作。[5]Certbot
用以实现新的数字证书认证机构的协议被称为自动证书管理环境(ACME)。[6]GitHub上有这一规范的草案,[6][7]且提案的一个版本已作为一个Internet草案发布。[8]
Let's Encrypt宣称这一过程将十分简单、自动化并且免费。[9]
Certbot is a free, open source software tool for automatically using Let’s Encrypt certificates on manually-administrated websites to enable HTTPS.是一个可以帮我们自动获取证书的软件。我们可以在 官网 选择自己的后端软件以及操作系统,它会列出我们需要操作的步骤。
Certbot is made by the Electronic Frontier Foundation (EFF), a 501(c)3 nonprofit based in San Francisco, CA, that defends digital privacy, free speech, and innovation.
Certbot。sudo apt-get install certbot python-certbot-nginx有两种获得证书的方式,一种是自动获取证书并且配置 nginx ,一种是仅获取证书。因为我的网站是在阿里云上,不在这个服务器上,所以我采用仅获取证书的方式。CNAME 记录删除,添加一个 A 记录,将域名指向当前服务器的 ip。sudo certbot certonly --nginx执行过程中会让你填邮箱,选择域名,然后等几秒钟就生成成功了,记住最后输出的证书的地址和密钥的地址。vim /etc/nginx/conf.d/windliang.cc.conf把 80 端口和 443 端口合在一起,然后将上边保存的证书和密钥地址填上。server { listen 80; listen 443 ssl; server_name windliang.cc; ssl_certificate /etc/letsencrypt/live/windliang.cc/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/windliang.cc/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; # 将80端口的http请求 301 重定向到新域名 if ( $scheme = "http" ) { return 301 https://windliang.wang$request_uri; } # 将443端口的https请求 rewrite 重定向到新域名 location / { rewrite ^(.*)$ https://windliang.wang$1 permanent; }}然后,就会发现可以得到 301 的状态码了。3 个月。但没有关系,教程说如果通过上边的步骤走的话,到期前它会自动帮我们更新。js 和后端通过 nginx。nginx 做重定向的过程相当曲折了。因为一开始我只对 80 端口做了重定向,当我在浏览器输入 windliang.cc 的时候,因为之前是通过 https 访问的,所以浏览器会自动在前边加上 https:// ,所以导致一直不能成功跳转。windliang.cc 不能跳转了。nginx 的原因,各种看日志,重启 nginx,但始终没找到问题,把 nginx 重装了两遍,甚至想把服务器重装了,最最后,终于意识到了这个 https 的问题,才想到了上边的解决方案。关键词:实现,通过