我刚刚安装了 nginx,正在尝试设置我的第一个网站。我尝试将 nginx 与 php-fpm 一起使用。nginx 已安装(当我访问我的 ip 时,我会看到默认的欢迎使用 nginx 页面)。
现在我尝试运行一个简单的脚本:
<?php
phpinfo();
但我一直遇到 403 Forbidden 页面。在我的虚拟主机日志中,我可以看到很多行,例如:
2012/05/18 01:29:45 [error] 4272#0: *1 access forbidden by rule, client: x.170.147.49, server: example.com, request: "GET / HTTP/1.1", host: "example.com"
该文件/srv/www/test/index.php
的所有者是 nginx(我试图查找777
包括该文件在内的完整路径,但没有成功)。
我已检查 nginx 确实在配置中的用户和组下运行,nginx/nginx
确实如此。在 nginx.conf 中,我更改了默认配置包含路径,以确保没有其他配置妨碍 ( include /etc/nginx/sites-enabled/
)。
我正在使用的配置如下所示(如果您需要其他配置(php-fpm / nginx.conf)请告诉我):
server {
listen 80;
server_name example.com;
root /srv/www/test;
access_log /var/log/nginx/example-access.log;
error_log /var/log/nginx/example-error.log error;
location ~ /. { access_log off; log_not_found off; deny all; }
location ~ ~$ { access_log off; log_not_found off; deny all; }
location ~* .(js|css|png|jpg|jpeg|gif|ico|xml|swf|flv|eot|ttf|woff|pdf|xls|htc)$ {
add_header Pragma "public";
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
log_not_found off;
expires 360d;
}
location ~ /.ht {
deny all;
access_log off;
log_not_found off;
}
location ~ /. {
access_log off;
log_not_found off;
deny all;
}
location ~ ^/(index|frontend_dev|admin|staging).php($|/) {
#rewrite ^/(.*)/$ /$1 permanent;
fastcgi_split_path_info ^(.+.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
index index.php;
try_files $uri /index.php?$args;
}
}
答案1
您的配置故意阻止它:
location ~ /. {
access_log off;
log_not_found off;
deny all;
}
这将匹配任何斜杠后跟任意类型字符的请求;.
正则表达式中的字符表示“任何字符”。
我假设您要检查文字.
;那就是这个配置:
location ~ /\. {
如果不是这样,请告诉我!