我的 nginx 错误日志中有以下消息:
FastCGI 在 stderr 中发送:“无法打开主脚本:/www//vb/showthread.php
我的网站不是用 vb 制作的,所以我想拒绝对 /vb/ 的任何请求,我该怎么做?
我尝试了
location /vb/ {
deny all;
}
但我仍然在错误日志中看到许多这样的错误,看起来像垃圾请求。
我怎样才能阻止访问/wp-loging.php
等?
我发现错误日志中的双 // 很奇怪并且我无法理解。
这是我的服务器配置:
server {
listen 80;
server_name www.domain.com;
#charset koi8-r;
#access_log logs/nattiq.access.log main;
location / {
root /home/www;
index index.php;
try_files $uri @rewrite;
}
location //vb/showthread.php {
deny all;
}
location /wp-login.php {
deny all;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /home/www;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location @rewrite {
rewrite ^ /index.php;
}
location ~ \.php$ {
root /home/www;
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 150;
答案1
双重//
原因是 SCRIPT_FILENAME,它实际上应该是这样的:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
您不应该尝试阻止.php
不存在的单个文件,而应该.php
通过在块顶部添加一行来防止任何虚假文件向上游传输location ~ \.php$
:
try_files $uri =404;
看这个文件了解详情。