There are also problems with csof policy

题图来自 Hseya

前言

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

配置 Nginx 反代

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

server {                                                                                                       
   server_name     cldash.domian.com;                                                         
   listen  443 ssl;                                                                                           
   location / {                                                                                           
       proxy_pass      http://127.0.0.1:9090/;                                                        
       #sub_filter      http://127.0.0.1:9090/  https://$request_uri/; #似乎是非必须的 ,重写uri 为 https                               
       sub_filter_once on;                                                                        
        }    
   } 
      
server {                                                                                               
    server_name     cldash.domain.com; 

    listen  80;                                                                    

    return      301 https://$server_name$request_uri;  
      
    }
## 必须,重定向非 https 请求

*第一个server 是监听 443 端口,由于我已经在 http 段配置好了全局ssl ,所以这了就没有涉及到证书的配置,需要加上即可。
并将通过 proxy_pass 讲请求抓发给后端 RESTful api 。

*第二个 server 监听 80 ,就是实现 http 请求 302 重定向到 https

至此,clash 代理所在的的 nginx 就已经配置完毕,保存配置,sudo nginx -s reload 重载配置即可生效。

部署 dashboard

源码来自 Clash 的作者 Dreamacro

# 获得源码
git clone https://github.com/Dreamacro/clash-dashboard.git
# 进入目录安装依赖包,并编译得到静态文件
cd ./clash-dashboard
npm install
npm run build

编译生成的源码在 ./dist 目录下,复制到 nginx 网站目录,配置一下即可。

最后

在 clash-dashboard 填入域名,和密码(如果配置了的话)
这里有几个坑:

  • 我目前的情况是 https 无法使用 http 的资源, http 也无法使用 https 的资源,这里两个都是 HTTP是 所以在填端口应该填 443
    截图
    截图

但如果,dashboard 是 Http 用 http 的资源那么此处也应该是 80 (好像想通了也不是什么坑)

  • 上面域名不用填 http 等