如何拒绝访问目录中的php文件?nginx

Bud*_*ddy 8 nginx

我已经尝试了很多配置的变体,但我仍然无法让它正常工作。有什么建议?

 location ~ /views/(.+)\.php$ {
      deny all;
 }
Run Code Online (Sandbox Code Playgroud)

配置:

server {
    listen       80;
    server_name  ...;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   /srv/www;
        index  index.php index.html index.htm;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/html;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    #    root           html;
     include        fastcgi_params;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /srv/www$fastcgi_script_name;
    }


 if (!-e $request_filename){
    rewrite ^/([0-9]+)$ /get.php?get=$1 last;
    rewrite ^/add$ /add.php;
    rewrite ^/rss$ /rss.php;
 }

 location ~ /views/(.+)\.php$ {
    deny all;
 }
}
Run Code Online (Sandbox Code Playgroud)

alv*_*osu 10

URL 与另一个位置匹配。后配置文件。

交换位置(按配置文件中定义的顺序检查正则表达式):

location ~ /views/(.+)\.php$ {
 deny all;
}
location ~ \.php$ {
.....
Run Code Online (Sandbox Code Playgroud)

  • 您可能还想通过以 ^ 开头将位置正则表达式锚定在根位置,如果不使用它,则没有理由捕获任何内容(不需要括号) (3认同)