请注意,本文编写于 1884 天前,最后修改于 994 天前,其中某些信息可能已经过时。
前言
这其实算是一个十分十分小众的需求,给服务器挂代理这事儿,也是没谁了···
问题来自最近几大浏览器禁止 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
重载配置即可生效。
6 条评论
请问,浏览器访问/clash-api时,能显示{"message":"Unauthorized"}。但是用dashboard的时候,输入了地址和secret,点击Add直接没反应。
nginx配置:
location /clash-api {
你看一下浏览器控制台给的是什么错误呢。
F12-控制台在 add 时给的信息
需要websocket的支持才能完美反代clash dashboard
server {
}
谢谢回复,已经很久没有更新了。
如果要启用
websocket
支持的话,注意还在 HTTP 段加上具体可以参考
年久失修
年久失修