You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:58:26