【问题标题】:fastcgi_path_info causes wrong fastcgi_script_name resulting in an 404fastcgi_path_info 导致错误的 fastcgi_script_name 导致 404
【发布时间】:2016-06-18 01:37:07
【问题描述】:

我在 Nginx 上遇到了一个问题,PHP-FPM 无法正确解析包含完整 URL-Path 的表单操作。根似乎是以下指令:fastcgi_split_path_info ^(.+.php)(/.+)$;

根据https://www.digitalocean.com/community/tutorials/understanding-and-implementing-fastcgi-proxying-in-nginx,第一个捕获组用于 $fastcgi_script_name,第二个用于 $fastcgi_path_info 变量。

在我的日志中我发现:/files/wordpress-live/analytics/sampling-luegt-google-analytics/index.php" 找不到(2:没有这样的文件或目录),客户端:217.50.183.28,服务器:mikeg.de,请求:“POST /analytics/sampling-luegt-google-analytics/HTTP/2.0”,主机:“mikeg.de”

报告无效路径“/files/wordpress-live/analytics/sampling-luegt-google-analytics/index.php”的日志。有人知道如何正确拆分发布请求路径以便 PHP-FPM 可以正确传递吗?

非常感谢和亲切的问候 迈克

【问题讨论】:

  • 您对$fastcgi_script_name 的期望值是多少?
  • 它应该是没有帖子网址的根文件夹。在这种特殊情况下,仅 /files/wordpress-live/
  • 请用相关配置文件扩展您的问题,特别是网站的server { ... } 块。
  • 感谢理查德的支持。这是有问题的服务器配置:Pastebin config
  • 目录/files/wordpress-live/analytics/sampling-luegt-google-analytics 是否真的存在于您的系统中?

标签: php forms nginx fastcgi


【解决方案1】:

我找到了原因。在根位置块中还定义了 POST 请求,导致这些请求不会跳过缓存,从而导致这种尴尬的行为。

【讨论】:

    猜你喜欢
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2015-05-24
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多