OpenWrt 上设置 nginx HTTP 不重定向到 HTTPS 以正常使用 OpenClash yacd 面板
由于 OpenWrt 编译时,如果在 make menuconfig
里选中了 LuCI
-> Collections
-> luci-nginx
和 luci-ssl-nginx
,会自动设置为将 HTTP(80 端口)重定向到 HTTPS(443 端口)。
但是 Clash 的 RESTful API 默认情况下以 HTTP 协议运行在 9090 端口,使用 nginx 作为 Web 服务器的 yacd 面板就无法连接到 Clash 的 RESTful API。
本文将教你用 5 条 shell 命令(算 6 条也行)使 nginx 不将 HTTP 流量重定向到 HTTPS。
以下内容更新于 2022-5-29。
自 OpenClash v0.45.22-beta 起,yacd 面板也将使用 Clash 的内置 Web 服务器(即与 Clash RESTful API 使用同一 Web 服务器,默认情况下监听 9090 端口)进行服务,无需再按照此教程进行设置即可正常使用 yacd 面板。
通过 SSH 或
luci-app-ttyd
连接到 OpenWrt 的终端。
OpenWrt 使用
uci
让整个系统的配置集中到一处,更便于管理。此教程基于 ImmortalWrt21.02-SNAPSHOT r19080-b7afdb4b5b
。理论上也适用于 OpenWrt 官方版本和其他没有移除uci
的 OpenWrt 下游项目。使用
uci show nginx
来查看所有与
nginx
相关的设置项。
我们的目标就是让 nginx 的虚拟服务器_redirect2ssl
返回与_lan
相同的内容。删除重定向相关内容
uci delete nginx._redirect2ssl.return
添加与
_lan
虚拟服务器相同的include
uci add_list nginx._redirect2ssl.include='restrict_locally' uci add_list nginx._redirect2ssl.include='conf.d/*.locations'
提交所有
uci
更改uci commit
重载 nginx 配置
service nginx reload
以下是所有命令的执行及结果截图。
其实,还有一种更简单的解决方法。以下截图来自 yacd/README.md at master · haishanh/yacd。
翻译:
站点 http://yacd.haishan.me 同时提供了对 HTTP 和 HTTPS 的支持,因为许多浏览器封锁了在 HTTPS 站点上对 HTTP 资源发起的请求。
警告
无论如何,不要在没有除了 Clash 的 RESTful API secret
以外的安全措施的情况下,从 WAN 访问 Clash 的 RESTful API。因为 secret
直接使用 URL 参数传递到 Clash 内核,也就意味着攻击者只需要截获你请求的 URL,即可修改你的 Clash 设置。
源于对音乐和科技的热爱
留言