nginx:只传递给php特定网址

时间:2014-02-16 05:02:34

标签: php nginx fastcgi

我需要使用php处理一些特定的网址,例如:

 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)

P.S。简单的位置,如:

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

作品。

2 个答案:

答案 0 :(得分:0)

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

删除^之后的空格。

答案 1 :(得分:0)

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

相关问题