nginx重写或内部redirect周期

我试图找出我的nginxconfiguration中导致redirect循环时试图访问不存在的URLconfiguration如下:

server { listen 127.0.0.1:8080; server_name .somedomain.com; root /var/www/somedomain.com; access_log /var/log/nginx/somedomain.com-access.nginx.log; error_log /var/log/nginx/somedomain.com-error.nginx.log debug; location ~* \.php.$ { # Proxy all requests with an URI ending with .php* # (includes PHP, PHP3, PHP4, PHP5...) include /etc/nginx/fastcgi.conf; } # all other files location / { root /var/www/somedomain.com; try_files $uri $uri/ ; } error_page 404 /errors/404.html; location /errors/ { alias /var/www/errors/; } #this loads custom logging configuration which disables favicon error logging include /etc/nginx/drop.conf; } 

这个域是一个简单的STATIC HTML网站,只是为了一些testing的目的。 我希望error_page指令将作为响应PHP-FPM无法find给定的文件,因为我有fastcgi_intercept_errors; 在http块和nave error_page设置,但我猜这个请求失败,甚至在内部redirect之前的某个地方。 任何帮助将不胜感激。

罪魁祸首是: try_files $uri $uri/ ;

http://nginx.org/r/try_files (请注意,最后一个参数是返回代码或URI到内部redirect)

如果找不到任何文件,则将内部redirect到由最后一个参数指定的uri。

正如其他人所说,这是罪魁祸首:

  try_files $uri $uri/ ; 

它创build一个redirect循环,因为如果没有find文件, try_files的最后一个参数应指向该位置。 我通过添加一个=404来解决它,就像这样:

  try_files $uri $uri/ =404 ;