之前在服务器一直使用f佬的sing-box一键脚本,尤其是脚本中带有订阅功能,适配了多款app。但若服务器中已经安装了宝塔面板的nginx环境,这个脚本就找不到nginx环境了(宝塔面板自带的nginx路径与常规安装nginx的路径不同),从而导致sing-box安装失败。

提出这个bug后,在f佬耐心帮助和AI的辅助下,终于实现了在不影响宝塔原有nginx功能设置的基础上,增加订阅功能,安装过程如下。
Step1:正常安装sing-box一键脚本
【注意】
- 在安装的时候,一定不要选择带“订阅”的(建议选择第
5项); - 安装的时候,记住你输入(或自动生成)的uuid(第二步要用)。
Step2:配置宝塔nginx
宝塔的nginx配置文件为/www/server/nginx/conf/nginx.conf,
在配置文件的末尾可以看到有:include /www/server/panel/vhost/nginx/*.conf;
也就是说,我们可以在这个路径下增加一个子配置文件。这样既不用改动主配置文件,也不用担心面板后续升级影响到sing-box的订阅。
进入 /www/server/panel/vhost/nginx 目录,在这个目录下增加一个文件,文件名任意,后缀必须为.conf(比如:singbox.conf),文件内容如下:
map $http_user_agent $path1 {
default /;
~*v2rayN /v2rayn;
~*clash /clash;
~*Neko|Throne /neko;
~*ShadowRocket /shadowrocket;
~*SFM|SFI|SFA /sing-box;
}
map $http_user_agent $path2 {
default /;
~*v2rayN /v2rayn;
~*clash /clash2;
~*Neko|Throne /neko;
~*ShadowRocket /shadowrocket;
~*SFM|SFI|SFA /sing-box;
}
server {
listen 33333 ; # 自己设置一个nginx的端口号,不要和系统已使用的端口重复
listen [::]:33333 ; # 和上面一行的端口号一致即可
server_name localhost;
# 注意:将下面三处的“11-1...111”字符串替换为你在第一步记录的uuid,前后的内容不要改动
location ~ ^/11111111-1111-1111-1111-111111111111/auto2 {
default_type 'text/plain; charset=utf-8';
alias /etc/sing-box/subscribe/$path2;
}
location ~ ^/11111111-1111-1111-1111-111111111111/auto {
default_type 'text/plain; charset=utf-8';
alias /etc/sing-box/subscribe/$path1;
}
location ~ ^/11111111-1111-1111-1111-111111111111/(.*) {
autoindex on;
proxy_set_header X-Real-IP $proxy_protocol_addr;
default_type 'text/plain; charset=utf-8';
alias /etc/sing-box/subscribe/$1;
}
}按上面的要求设置好端口号和uuid,保存文件即可。
Step3:验证及重载nginx
- 使用命令
nginx -t对配置进行验证(终端输出包含syntax is ok与test is successful,说明配置文件正确); - 使用
nginx -s reload或者systemctl reload nginx任一命令执行重载; - 也可以在宝塔面板 “软件商店--已安装” 中找到nginx,进入“设置”,点击“重载配置”按钮;
- 如果一切顺利,用浏览器尝试访问
http://你的ip:端口号/uuid/(比如:http://192.168.1.1:33333/11111111-1111-1111-1111-111111111111/),最后的斜杠一定要有!如果可以看到目录列表,即表示配置成功!
