Ubuntu 20.04自动更新Apache2后出现AH10292无效代理UDS文件名错误
Apache2无人值守升级后500错误故障修复方案
故障根因
Ubuntu给Apache2推送的2.4.41-4ubuntu3.5安全补丁更新了mod_proxy模块的UDS(Unix域套接字)路径校验逻辑,禁止了路径中带|字符的旧写法,你原有Apache站点配置中使用的unix://xxx.sock|fcgi://xxx格式不符合新的校验规则,因此触发了AH10292报错。
修复步骤
步骤1:修改Apache站点配置的代理规则
所有使用PHP-FPM UDS套接字的站点配置默认存放在/etc/apache2/sites-available/目录下的.conf文件中,将原有类似如下的旧写法:
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:///var/run/php/php7.4-fpm.sites.mydomain.com.sock|fcgi://sites//srv/www/sites/html/$1
替换为兼容新版本的写法,把fcgi前缀放在最前面,套接字路径做URL编码后放在uds参数中:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://uds=%2Fvar%2Frun%2Fphp%2Fphp7.4-fpm.sites.mydomain.com.sock/srv/www/sites/html/$1
注意:UDS路径中的/需要统一编码为%2F,参数后直接跟站点根目录的绝对路径,不需要额外加域名前缀
步骤2:校验PHP-FPM状态(可选)
执行命令ls /var/run/php/确认php7.4-fpm.sites.mydomain.com.sock文件存在,如果文件不存在可检查/etc/php/7.4/fpm/pool.d/下的对应池配置,确认listen参数指向的路径和Apache配置中填写的路径一致即可,PHP侧本身不需要修改配置。
步骤3:验证配置并重启服务
- 执行
apache2ctl configtest验证Apache配置无语法错误 - 验证通过后执行
systemctl restart apache2重启Apache服务 - 可同步执行
systemctl restart php7.4-fpm确保PHP-FPM服务状态正常
常见疑问解答
- 是否需要重新配置PHP相关设置? 不需要,只要你的PHP-FPM池配置没有被改动、套接字路径正确,不需要修改PHP侧的任何配置,仅调整Apache的代理规则即可修复。
- 是否需要对Apache版本进行升降级操作? 不需要,该故障是配置写法不兼容新安全规则导致的,直接修改配置即可修复,升降级Apache反而可能引入额外的安全风险或兼容性问题。
内容的提问来源于stack exchange,提问作者Duddy67
相关产品推荐
相关产品推荐

