nginx:try_files找不到静态文件,回到PHP

相关配置:

location /myapp {
    root /home/me/myapp/www;
    try_files $uri $uri/ /myapp/index.PHP?url=$uri&$args;

    location ~ \.PHP {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.PHP;
        include       /etc/Nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.PHP;
    }
}

我在/ home / me / myapp / www中绝对有一个文件foo.html,但是当我浏览到/myapp/foo.html时,它由PHP处理,这是try_files列表中的最终回退.

为什么会这样?

最佳答案
如果您浏览到/myapp/foo.html,Nginx会检查/home/me/myapp/www/myapp/foo.html上的文件.当它在那里找不到它时,它会继续执行try_files列表中的后备.

如果您需要Nginx来检查/home/me/myapp/www/foo.html上的文件,那么在您的用例中您需要使用别名而不是root.这是解决方案……

location /myapp {
    alias /home/me/myapp/www;
    try_files $uri $uri/ /myapp/index.PHP?url=$uri&$args;

    location ~ \.PHP {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.PHP;
        include       /etc/Nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.PHP;
    }
}

请注意,有一个longstanding bug别名和try_files不能一起工作.另请注意,使用别名可能会破坏配置的其他部分,例如PHP处理!

相关文章

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一...
本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改l...
nginx不仅可以隐藏版本信息,还支持自定义web服务器信息 先看...
一 、此次漏洞分析 1 nginx HTTP/2漏洞 [nginx-announce] ng...
###进入nginx 目录cd /usr/local/nginx###递归显示 2 级目录...
在cmd命令窗口输入下面命令进行查看 tasklist /fi "ima...