1Panel-dev / 1Panel

🔥🔥🔥 Web-based linux server management control panel. / 现代化、开源的 Linux 服务器运维管理面板。
https://www.1panel.cn
GNU General Public License v3.0
22.66k stars 2.06k forks source link

[BUG] 一段规则导致 openrestry 更新配置始终超时 #2889

Closed Murasame233 closed 11 months ago

Murasame233 commented 12 months ago

联系方式

No response

1Panel 版本

1.8.1

问题描述

一条魔法伪静态规则,加入这一条规则,在更新伪静态时直接超时

我已经使用排除法确认是这条规则与 1panel 有冲突。

目前此规则在其他平台使用无问题。

自己开一个nginx暴露到8080端口,使用含有此规则的配置,服务能够正常运行。

使用环境 PHP: 8.1.23 MariaDB: 10.11.5.1 OpenRestry: 1.21.4.2 WHMCS: 8.7.3

#== WHMCS Client Area
location ~ /(images/em|invoice|login|password|account|store|download|knowledgebase|project_management|announcements|clientarea/ssl-certificates|user/(verification|accounts|profile|password|security|verify)|cart/(domain/renew)|cart/order|images/kb)/?(.*)$ {
  root /www/sites/whmcs.demo.ai-chat-support.com/index; 
  rewrite ^/(.*)$ /whmcs/index.php?rp=/$1/$2;
}

重现步骤

创建任意一个网站(注意是任意,静态也行,任何类型都行)。在伪静态规则一览加入以上规则,点击保存并重载。 此时会超时,查看 log 无任何相关输出,甚至连请求都没记录。 浏览器console看就是500,打开1panel日志根本没有记录这个请求 journalctl -u 1panel -f 在有多条伪静态规则时,去掉这条规则,则能够保存。

Murasame233 commented 12 months ago

最终发现了问题,是加上这条规则后,用时太长,但文件依旧没有更新

截屏2023-11-10 20 11 12
Murasame233 commented 12 months ago

我没时间设置开发环境,但我看了下代码,我感觉问题出在validate上。用时太长了

zhengkunwang223 commented 12 months ago

您好 我在本地没有复现

Murasame233 commented 12 months ago

您好 我在本地没有复现

请问有没有在低性能小鸡上测试,我发现把那个长正则删了就能过

~ /(images/em|invoice|login|password|account|store|download|knowledgebase|project_management|announcements|clientarea/ssl-certificates|user/(verification|accounts|profile|password|security|verify)|cart/(domain/renew)|cart/order|images/kb)/?(.*)$

请问在处理类似数据时后端会对此进行解析处理吗

zhengkunwang223 commented 12 months ago

您好 我在本地没有复现

请问有没有在低性能小鸡上测试,我发现把那个长正则删了就能过


~ /(images/em|invoice|login|password|account|store|download|knowledgebase|project_management|announcements|clientarea/ssl-certificates|user/(verification|accounts|profile|password|security|verify)|cart/(domain/renew)|cart/order|images/kb)/?(.*)$

请问在处理类似数据时后端会对此进行解析处理吗

这个的原理是去openresty添加此配置,然后reload openresty,性能低,执行reload 会慢,可能就是这个原因

Murasame233 commented 11 months ago

那应该跟另一个 issue 一样,可以自定义axios超时时间才好,或者可以保存reload分开。 目前奇怪的是看日志在一分钟后给了个 200 的回复,但是看文件却没有更新