这是我的nginx的内容。
我当前的访问网址为http://localhost/lampi/,我收到了回复403 forbidden
。
我的服务器的文档是/ Library / WebServer / Documents /.
当我访问http://localhost/时,它显示正常。我还可以看到index.html页面的内容。
我不知道是怎么回事。我已经在stackoverflow中检查了前10页。
server {
server_name localhost;
access_log /var/log/nginx/nginx.host.access.log main;
root /Library/WebServer/Documents/;
location / {
#root html;
index index.html index.htm index.php;
}
location /lampi {
#autoindex on;
if (!-e $request_filename){
rewrite ^/lampi/(.*)$ /lampi/index.php?s=$1 last;
}
}
location ~ \.php$ {
include /usr/local/etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /Library/WebServer/Documents/lampi/$fastcgi_script_name;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_param HTTP_PROXY "";
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
#location /images/ {
# root /usr/local/var/www;
#}
}
答案 0 :(得分:0)
配置文件存在三个潜在问题。
使用if (!-e $request_filename)
会导致问题,因为它会检查目录是否存在,并且您可能应该使用try_files
(有关详细信息,请参阅this document):
location /lampi {
try_files $uri $uri/ @lampi;
}
location @lampi {
rewrite ^/lampi/(.*)$ /lampi/index.php?s=$1 last;
}
SCRIPT_FILENAME
的值会在路径名中添加额外的/lampi
。使用(在这种情况下评估为相同的值)中的任何一个:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $request_filename;
例如:
location ~ \.php$ {
try_files $uri =404;
include /usr/local/etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
location ~ [^/]\.php(/|$)
块令人困惑。通常,使用location ~ \.php$
或location ~ [^/]\.php(/|$)
之类的内容就足够了,具体取决于您的应用程序是否使用PATH_INFO。删除您不使用的块。有关详细信息,请参阅this document。