Azure PHP8.2+Nginx网站仅index.php可访问,其他页面404求助
解决Azure Web App Linux+Nginx环境下PHP页面404问题的思路
确认PHP运行模式:Azure Web App for Linux的PHP栈默认搭载PHP-FPM,无需手动安装。你觉得未安装大概率是没找对配置路径——Azure对Nginx和PHP-FPM的配置做了封装,自定义配置需放在指定目录。
适配Nginx重写规则:从Apache迁移过来,原
mod_rewrite规则要转成Nginx的rewrite逻辑。如果是框架驱动的网站,对应配置示例:Laravel项目:
location / { try_files $uri $uri/ /index.php?$query_string; }WordPress项目:
location / { try_files $uri $uri/ /index.php?$args; }该规则会将非静态文件请求转发至index.php,解决框架路由导致的404。
使用Azure自定义Nginx配置:Azure不允许修改系统默认的
nginx.conf或default.conf,需在项目根目录创建.nginx.conf文件(或/home/site/nginx目录下的配置文件,依Azure版本而定),添加以下核心配置:location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # Azure默认PHP-FPM socket路径,若无效可尝试/var/run/php-fpm/php-fpm.sock fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location / { try_files $uri $uri/ /index.php?$query_string; }修正文件权限:Linux环境下Nginx运行用户(通常为
www-data)需拥有网站文件的读取权限。通过Azure门户SSH功能进入容器,执行以下命令:chmod -R 755 /home/site/wwwroot chown -R www-data:www-data /home/site/wwwroot验证PHP-FPM运行状态:SSH进入容器后,执行
ps aux | grep php-fpm查看是否有PHP-FPM进程。若未运行,尝试重启Web App,或在门户"配置"->"常规设置"中重新选择PHP版本并保存,触发环境重建。
内容的提问来源于stack exchange,提问作者Lucas da Costa Lucas
相关产品推荐
相关产品推荐

