【问题标题】:nginx: PHP-files are being downloaded after rewritenginx:重写后正在下载PHP文件
【发布时间】:2014-04-02 16:44:17
【问题描述】:

我在 ISPConfig3 服务器上使用带有 PHP-FPM 的 nginx。

我将以下重写规则放入我的 nginx 指令中(以在 Pydio 中创建更漂亮的链接):

location ~ \.php$ {
        try_files @php;
    }

location @php {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9026;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
    }

proxy_set_header X-Accel-Mapping /var/www/XXXYYY.com/pydio/data/=/data/;

location /conf/       { deny all; }
location /data/       { internal; }

location /data/public/ {
    try_files $uri $uri.php =404 last;
}

我希望 pydio.XXXYYY.com/data/public/* 中的 URL 添加 .php 扩展名。 此规则查找地址栏中没有 .php 的文件,但现在它们被下载而不是执行。

由于我使用 ISPConfig3,.php 文件的重写(让它们由 PHP-FPM 执行)高于所述部分。但我认为添加“last”应该可以解决这个问题。

我还能尝试什么? 谢谢!

【问题讨论】:

    标签: php nginx location rewrite pydio


    【解决方案1】:

    首先,您误解了 try_files 指令。没有“最后一个”论点,它不像你想象的那样起作用。请检查文档:http://nginx.org/r/try_files。这是技术文档,从字面上看,每个字都有含义。

    要解决您的问题,您必须从 try_files 中删除最后两个参数:

    try_files $uri $uri.php =404 last;
    

    应替换为:

    try_files $uri $uri.php;
    

    【讨论】:

    • 您在rewrite 指令中看到的last 参数。请参阅文档:nginx.org/r/rewrite,但 try_files 是具有不同语法的不同指令,您不能将参数从其他指令应用到它。
    • Nginx 无法执行 php 代码,但它可以代理请求(在您的情况下使用 fastcgi 协议)以获取其他一些可以执行的守护程序。但是fastcgi_pass 指令仅在您的@php 位置中指定,而您的location /data/public/ 提供文件。
    • try_files 上的文档清楚地说明了该指令的工作原理: 按指定顺序检查文件是否存在,并使用第一个找到的文件进行请求处理;处理是在当前上下文中执行的。 还有:如果没有找到任何文件,则内部重定向到最后一个参数中指定的 uri。 @nginx.org/r/try_files
    • 如果是try_files $uri $uri.php; - $uri 参数是要检查的文件,$uri.php 参数是在检查失败时重定向的 URI。但是在您的try_files $uri $uri.php =404 中,$uri$uri.php 都只是要检查的文件。
    • 因为 处理是在当前上下文中执行的 并且在 location /data/public/ 上下文中您没有 fastcgi_pass,因此该上下文中的 .php 文件将像任何其他静态文件(.png、.jpg、.css、.js.. 等)。 Nginx 对 PHP 一无所知,它只是按照它的配置方式工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2016-07-31
    • 1970-01-01
    • 2019-11-07
    • 2018-01-23
    • 2018-01-31
    相关资源
    最近更新 更多