前言

这其实算是一个十分十分小众的需求,给服务器挂代理这事儿,也是没谁了···
问题来自最近几大浏览器禁止 https 网页加载 http 资源,clash.razord.top 也去掉了 https 。但··怎能缺少 https 呢。
大致就是 Nginx 反代 RESTful api ,自己构建静态文件,搭建自己的 web dashboard ,实现全站 https 并且少开放一个端口,减少风险。

主要就是两个 NGINX 反代。

配置 Nginx API 反代

需要解决的两个问题是端口转发和 https 重定向。
先贴配置文件

server {                                                                                                       
   server_name     clashapi.domian.com; #你的域名                                                        
   listen  443 ssl; 
   ssl_certificate /path/fullchain.pem;
   ssl_certificate_key /path/privkey.pem;                                                                                      
   location / {                                                                                           
       proxy_pass      http://127.0.0.1:9090/;   #9090对应你在clash config.yml 中配置的 external-controller 端口,默认是9090
    }
}

Nginx 的 Proxy_pass 是反代,传给后端的 clash API,流量先从 Nginx 到 clash。
关于证书问题,可以使用 LinuxServer 的 swag Docker 镜像,配置完成后,证书目录在容器内的 /etc/letsencrypt/live 目录下。

live/ 下的证书是软链接到 etc/letsencrypt/archive 下的,swag 每次更新会重命名 archive 下过期的证书并重命名,这样live/下的证书就是archive/下最新的证书。

部署 YACD Dashboard

Dreamacro 写的 clash-dashboard 目前还没有编译好的 release,不能直接拿来用,这里可以选择 yacd 的,他提供的面板是HTTPS的,如果上面已经操作好了,可以直接填上上面你配置的域名 https://cldash.domian.com 就可以正常使用了。

自己保署的方法也很简单。

NGINX的配置文件

server {
    server_name     cldash.domain.com;
    listen  80;
    return      301 https://$server_name$request_uri;
}

server{
    listen 443 ssl;
    server_name cldash.domain.com;
    ssl_certificate /path/fullchain.pem;
    ssl_certificate_key /path/privkey.pem; 
    root /var/www/yacd;
}

Github上下载yacd的编译好的静态文件,解压tar.gz文件到/var/www/yacd(按照Debian 上 apt 安装的Nginx默认的目录),并配置好权限 sudo chown -R www-data:www-data /var/www/yacd

网站目录权限不当,Nginx 会报 403 的错误代码;
根据 Nginx 安装方法,Nginx 默认的配置文件目录和网站目录不同,请根据自己的实际情况修改。
  • 第一个 server 监听 80 端口,让 http 请求 302 重定向到 https;
  • 第二个server 是监听 443 端口,配置好证书。
  • sudo nginx -s reload 重载配置即可生效。

关于域名

最后修改:2022 年 03 月 19 日
如果觉得我的文章对你有用,请随意赞赏