二级域名 Nginx 反向代理与 https 认证
新型冠状病毒的恶劣环境下,阿里一个星期不到的时间备案成功(本准备静等一个月之后再折腾……),好评!!!
百度、谷歌收录问题
详细步骤请见 Hexo 个人博客站点被百度谷歌收录。
注意
- 下载的 HTML 文件不要放在根目录的
source
中,因为会被 Hexo 解析,应放至主题目录下的source
,然后部署至服务器。 - 下载 Google 验证文件时,不要用“Chrono 下载管理器”,否则下载的是 txt 文件。
二级域名添加
两种方法:(方法 1 添加的不会在方法 2 处同步出现,但反之则会同步出现)
阿里云控制台->云解析 DNS->点击域名进入解析设置界面->添加记录:
阿里云控制台->轻量应用服务器->域名->添加域名:
反向代理至同 IP 下的不同端口
(以 emq dashboard 为例)查看 nginx.conf
可知 nginx 配置包括 conf.d
目录下的所有配置,但此目录下是空的,所以决定直接在此创建 emq.conf
。
配置如下:
server{
listen 80;
server_name emq.tclx.xyz;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://<公网 IP>:18083;
}
}
解决访问时显示不安全的问题
原因:http 协议在如 Chrome、Safari 中会显示不安全,https 则不会,因此需要 http 重定向 https。
申请 SSL 证书
进入 SSL 证书(应用安全) 购买证书。
如果你只要一个域名申请 SSL 购买数量为 1 即可,可能是因为我的乞丐语文,想直接买 4 年,然后买了 4 个……
购买后进行证书申请,填写并验证信息后只需等待即可。(在疫情下 10 分钟又过了哈)
证书下载
申请成功后下载 nginx 证书(Zip 压缩包,解压得 pem 证书文件和 key 密钥文件)。
在服务器 /etc/nginx
创建目录 cert
,将解压后两文件上传到 cert
目录下。
安装证书
在 conf.d
目录下创建配置文件 blog.conf
,配置如下:(来源于参考文章,nginx.conf.default
中也有模版)
# HTTPS server
server {
listen 443 ssl; # https 监视端口是 443
server_name tclx.xyz;
ssl_certificate "/etc/nginx/cert/****.pem";
ssl_certificate_key "/etc/nginx/cert/****.key";
ssl_session_cache shared:SSL:1m;
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 / {
root /usr/share/nginx/html/blog; # 博客文件存放位置(因人而异)
index index.html index.htm;
}
}
重新加载 nginx nginx -s reload
。
成功?
https://域名
能访问了,但是光输域名却仍跳转至 http,参考文章中提到重定向 https,那就重定向,冲!
只想博客重定向的一时想法,将 rewrite ^(.*)$ https://$host$1 permanent;
放在了 blog.conf
中,导致访问时出现“发生了太多重定位”错误,无限尝试未果只能求助大牛 ZZH,一点即通!
重定向需要监听的是 80 端口,而不是 443 端口,因此造成了无限循环重定向,将 rewrite ^(.*)$ https://$host$1 permanent;
放至 nginx.conf
后完美实现自动跳转 https!
文章参考文献
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。