昨天遇到了新问题,就是如何在已经安装并运行了nginx网站的服务器里导入3X-UI面板的问题。问了chatGPT,结果绕来绕去不但没解决,还把chatGPT自己绕进去了。于是只好自己找原因,想办法了。
首先,在已运行 Nginx 并配置好证书的站点安装 3X-UI面板,从理论上说,应该可以让 3X-UI面板直接调用网站的证书,我之前的思路一直是这个,可是新版的 3X-UI面板(v2.8.7)菜单里,根本就没有自己设置证书路径的选项。没办法,只能通过sqlite3 直接写进x-ui.db的数据库里。可写完之后,访问面板根目录依然显示ERR_CONNECTION_CLOSED,看来是nginx的设置有问题。
反复看了nginx的配置文件,没有发现问题出在哪儿。于是只好先洗洗睡了。
今天突然想到了一个变通的方法,既然nginx可以反代给apache,为什么不能也同样反代给3X-UI面板呢?这样统一用nginx监听443端口,网站流量反代给apache,访问面板根目录的流量反代给面板端口,这样面板本身就不用申请SSL了,而又能用SSL安全传输了吗?
想到这里,开始动手写nginx配置文件,先在server块里添加一个location,并且增加^~以调高优先级。
location ^~ /myBasePath/ {
proxy_pass http://127.0.0.1:XXXXX;
……
}
加完之后去访问面板,结果迅速返回404。看了是面板这边根路径没设置造成的,只好sqlite3 x-ui.db进数据库去看一下webBasePath的设定,用
select value from settings where key = ‘webBasePath’;
调取一看,果然是空的,于是update一下,结果还是返回空,看来v2.8.7的设置里没有这一项,只好自己添加了。
insert or replace into settings (key, value) values ('webBasePath', '/myBasePath/');
再select调取,终于看到根路径了。
返回网页输入https://我的域名/myBasePath/后,3X-UI面板的登录界面终于现身了!
