在前面我们给群晖的应用添加了域名,在外网可以用域名访问 Heimdall 导航页,Halo 博客等,但是都是通过 HTTP 访问的。即使你能忍受浏览器上显示的 “不安全”,有时候一些应用也不可避免的需要使用 HTTPS,比如 Bitwarden,不通过 HTTPS 不允许注册。

一、前提条件

博主有一台腾讯云的轻量服务器,拥有一个songshiyu.cn的域名,本博客部署在本地的一台黑群晖中,已经通过内网穿透以及反向代理实现了外网访问,但是每次用域名访问的时候会有不安全的显示,如下图: image

我们的目的就是,在浏览器无论输入 songshiyu.cn 还是 http://songshiyu.cn 都会自动转跳到 https://songshiyu.cn 并正常显示: image-1675487256860

二、腾讯云下载证书

进入DNSPod的控制台:https://console.dnspod.cn/ ,可以查看到目前绑定在腾讯云上的域名,点击SSL:

选择免费证书:

填写对应的域名和邮箱,设置保持默认:

审核通过后,根据提示下载证书并解压:

三、上传证书并修改 nginx 配置文件

  • 找到 nginx 的安装目录,将证书存放至 路径/nginx/ssl 下,我这里是 /www/server/nginx/ssl/
  • 修改 ngxin/conf/ngxin.conf 文件,我这里使用的是 finalshell 上传和编辑。
  • 在 http 块下添加下面的代码:
    server {
        listen       80;
        server_name  songshiyu.cn;
	   return 301 https://$host$request_uri;  # 这句是重定向到 https

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

以及:

    server {
        listen       443 ssl;
        server_name  你的域名;

        ssl_certificate      /www/server/nginx/ssl/你的域名_bundle.pem;  # 此处是路径
        ssl_certificate_key  /www/server/nginx/ssl/你的域名.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
		proxy_pass http:访问的ip:端口;
        }
    }
  • 保存好后重启nginx
nginx -s stop
nginx

大功告成!