褪尘矗心

二级域名 Nginx 反向代理与 https 认证

新型冠状病毒的恶劣环境下,阿里一个星期不到的时间备案成功(本准备静等一个月之后再折腾……),好评!!!


百度、谷歌收录问题

详细步骤请见 Hexo 个人博客站点被百度谷歌收录

注意

  • 下载的 HTML 文件不要放在根目录的 source 中,因为会被 Hexo 解析,应放至主题目录下的 source,然后部署至服务器。
  • 下载 Google 验证文件时,不要用“Chrono 下载管理器”,否则下载的是 txt 文件。

二级域名添加

两种方法:(方法 1 添加的不会在方法 2 处同步出现,但反之则会同步出现)

  1. 阿里云控制台->云解析 DNS->点击域名进入解析设置界面->添加记录:

    z

  2. 阿里云控制台->轻量应用服务器->域名->添加域名:

    3

反向代理至同 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!

文章参考文献

在 Nginx/Tengine 服务器上安装证书

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。