让 nginx 在加载精确位置时执行特定的 PHP 文件

让 nginx 在加载精确位置时执行特定的 PHP 文件

我刚刚实现了through和脚本Autodiscover的功能。虽然设置运行良好,但我想对 nginx 服务器块进行一些改进,但没有成功。MS Outlook ClientsNginxPHP

当前的 nginx 服务器块如下所示,正如您所看到的,当位置/autodiscover/autodiscover.xml加载时,客户端会被重定向到/autodiscover/autodiscover.php,然后 nginx 执行 PHP 脚本并将结果返回给客户端。

        location = /autodiscover/autodiscover.xml
        {
            rewrite .* /autodiscover/autodiscover.php redirect;
        }

        location ~ \.php$ {
          fastcgi_pass          php-fpm73;
          fastcgi_split_path_info ^(.+\.php)(/.*)$;
          include               /etc/nginx/fastcgi_params;
          fastcgi_param         SCRIPT_FILENAME    $document_root$fastcgi_script_name;
          fastcgi_param         HTTPS              on;
       }

我想修改 nginx 服务器块,以便在/autodiscover/autodiscover.xml请求时/autodiscover/autodiscover.php执行 PHP 脚本,然后将结果返回给客户端而不重定向,因此客户端的 URL 保持不变/autodiscover/autodiscover.xml

希望可以有人帮帮我。

先谢谢了,

答案1

只需使用

rewrite .* /autodiscover/autodiscover.php last;

相反。该last标志将强制 nginx 中断当前位置处理并根据重写的 URI 搜索新位置。

您可以检查完整的rewrite指令语法这里

相关内容