【问题标题】:Respect both location directives in nginx configuration尊重 nginx 配置中的两个位置指令
【发布时间】:2014-05-09 03:13:57
【问题描述】:

由于我创建了一个 location 块,以下使 nginx 不传递给 PHP-FPM fastcgi 服务器:

location = /test.php {
    auth_basic "Nope.";
    auth_basic_user_file /test.htpasswd;
}

location ~* \.php$ {
    try_files $uri =404;

    include params/fastcgi;

    fastcgi_keep_conn on;
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:4623;
}

意思是:如果第一个位置块匹配,似乎第二个被忽略。在不将 fastcgi-stuff 从第二个位置块复制到第一个位置块的情况下,是否有任何解决方案

【问题讨论】:

  • 您介意在出现问题的地方显示示例请求吗?第一个将匹配domain/test.php。其余的 php 应由其他位置处理。我想看看你是如何测试这个conf的。
  • 我通过调用 test.php 来测试它,并看到 php 代码出现在我的浏览器中;-) 所有其他 php 文件都可以工作。

标签: nginx configuration webserver


【解决方案1】:

我会将您所有的 fastcgi 配置放在一个文件中,并将其包含在两个位置。

嵌套位置之类的东西可能会使您的配置出现错误,并且更难以理解和维护。

【讨论】:

  • 这是正确的解决方案吗?有没有办法说'嘿,请也看看其他位置块?
  • 查看以下链接:nginx.org/en/docs/http/request_processing.html。你会发现“......nginx首先搜索由文字字符串给出的最具体的前缀位置,无论列出的顺序如何......”。您正在使用“/test.php”文字,而 nginx 不会匹配任何其他位置。
  • 谢谢,这似乎是最好的做法。
猜你喜欢
  • 1970-01-01
  • 2012-11-09
  • 2014-02-15
  • 2015-06-11
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多