我正在尝试设置一个非常简单的 nginx 配置来提供静态内容。这是我的配置设置。每当我尝试访问不存在的文件时,我都会得到 HTTP 500,而不是 404。请告诉我我做错了什么?
2012/12/21 11:15:14 [错误] 1906#0:*41 重写或内部重定向循环,内部重定向到“/index.html”,客户端:127.0.0.1,服务器:i.domain.com,请求:“GET /favicon.ico HTTP/1.1”,主机:“i.domain.com”
server {
listen 127.0.0.1:81; ## listen for ipv4; this line is default and implied
root /project/;
index index.html index.htm;
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
server_name i.domain.com;
location / {
try_files $uri $uri/ /index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
}
答案1
看起来您有两个问题。
- 您没有 /index.html 文件
- 您没有/404.html 文件
当发出请求时,它会经历尝试文件过程。最后,它会意识到 index.html 不存在,并继续返回 404。要完成该任务,它现在必须获取 404.html 并重新开始请求。它会检查 $url(其中 $url 定义为“404.html”),然后检查 $url/,然后再次检查 index.html,然后进入无限循环。
由于您进入了 inf 循环,因此这是一个内部错误。因此,恰好出现了错误 500。
答案2
您没有在目录中创建index.html
文件/project