【问题标题】:nginx: pass to php only specific urlsnginx:仅传递给 php 特定的 url
【发布时间】:2014-02-16 15:48:22
【问题描述】:

我只需要用php处理一些特定的url,比如:

 http://10.0.0.1/orange
 http://10.0.0.1/pear
 http://10.0.0.1/apple

任何其他字符串,例如:

 http://10.0.0.1/orange/
 http://10.0.0.1/orangeee
 http://10.0.0.1/ora.gif
 http://10.0.0.1/orange.php

必须用 404 或 400(更好)来阻止

这是我的服务器块:

server {
    listen 10.0.0.1:80;
    server_name 10.0.0.1;
    root /usr/share/nginx/;
    location ~ ^ (apple|orange|pear)$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root/processor.php;
        fastcgi_pass 127.0.0.1:9000;
        expires -1;
    }
}

它没有按预期工作:

请求:

POST http://10.0.0.1/orange

共鸣:

404

错误日志报告:

open() "/usr/share/nginx/orange" failed (2: No such file or directory)

附言简单的位置,例如:

location /orange {
    include /etc/nginx/fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME  $document_root/processor.php;
    fastcgi_pass 127.0.0.1:9000;
    expires -1;
}

有效。

【问题讨论】:

    标签: php nginx fastcgi


    【解决方案1】:

    ^ 后面的空格替换为/,使正则表达式像^/(apple|orange|pear)$ 一样

    【讨论】:

      【解决方案2】:

      您的正则表达式中有一个空格:^ (apple|orange|pear)$

      去掉^后面的空格。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 2014-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多