tail -f /var/log/nginx/error.log
2013/05/04 23:43:35 [error] 733#0: *3662 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET /robots.txt HTTP/1.1", host: "kowol.mysite.net"
HTTP/1.1", host: "www.joesfitness.net"
2013/05/05 00:49:14 [error] 733#0: *3783 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET / http://www.qq.com/ HTTP/1.1", host: "www.qq.com"
2013/05/05 03:12:33 [error] 733#0: *4232 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", host: "joesfitness.net"
Estou recebendo esses dados do log de erros do nginx, não tenho um subdomínio "kowol", não tenho links para qq.com ou joesfitness.net no meu site. O que está acontecendo?
Editar: configuração padrão do Nginx:
server {
listen 8080; ## listen for ipv4; this line is default and implied
listen [::]:8080 default ipv6only=on; ## listen for ipv6
root /usr/share/nginx/www;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
deny all;
}
# Only for nginx-naxsi : process denied requests
#location /RequestDenied {
# For example, return an error code
#return 418;
#}
#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 /usr/share/nginx/www;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
#With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
try_files $uri $uri/ /index.html;
eindex index.php index.html index.htm;
define. resultando no erro na pergunta. Não é o caso para as versões 12.04 e 14.04, sendo menos provável que isso ocorra em um servidor.Você também receberá essa mensagem de erro se
index.php
estiver totalmente ausente.fonte
Isso foi chato. Estava funcionando há algumas semanas e falhou comigo quando tentei hoje.
Eu acreditava que uma atualização do
nginx
pacote Ubuntu causava o diretório padrão de onde o Ubuntu mantinha os arquivos de índice padrão alterados, então a linha:Não funcionará mais, pois o local dos arquivos está em
/usr/share/nginx/html
.Para corrigir, pode-se alterar o ponteiro raiz para o diretório correto ou criar um link simbólico para o novo diretório:
Funciona para mim.
fonte
Encontrei esse problema ontem porque estava testando o nginx em um servidor proxy que havia armazenado em cache um redirecionamento que não existia mais. A solução para mim foi
$ sudo service squid3 restart
no servidor proxy squid3 pelo qual eu estava me conectando.fonte
Com esse erro hoje, passe algumas horas imaginando a causa. Acabou que alguém excluiu todos os arquivos do site.
fonte
Apenas para adicionar outro caso quando isso acontecer. Como na resposta aceita, em geral, isso acontece quando uma sequência de locais sendo tentada e, em seguida, é criada uma espécie de loop de redirecionamento interno (interminável).
Às vezes, ele se manifesta com configurações ruins do NGINX e mesmo com o chmod restritivo (em algumas configurações de bloqueio). Aqui está um exemplo.
Suponha que você tenha um
index.php
controle frontal, como de costume:Você serve principalmente URLs de SEO como
/some/thing
através do seuindex.php
.Mas, como sempre, existem alguns arquivos PHP que você precisa ser exposto diretamente (portanto, o
location ~\.php
e nãolocation = /index.php
.Suponha também que você
index.php
tenhachmod
recebido a opção 0400 para bloqueio de segurança.Tudo ainda funciona bem nesse caso, desde que o arquivo seja de propriedade do "usuário do PHP-FPM". O NGINX não precisa ler o arquivo, porque apenas passa seu nome de arquivo para o PHP-FPM para execução e recebe de volta a resposta do FastCGI.
Então você quer lidar com um caso do que acontece quando alguém visita,
/non-existent.php
porque com essa configuração bastante padrão você obteriaNo input file specified.
esse caso.Para lidar com isso, algumas pessoas acrescentam:
Bem,
if
é claro que é mau conforme o nginx, mas não é isso. Tudo agora vai quebrar com o erro do ciclo de redirecionamento. Por quê?Porque essa sequência acontece em um loop:
/some/page
URL é solicitada, o nginx entralocation /
, não encontra um arquivo real e o transforma em/index.php
.php
bloco de localização e tenta verificar se consegue lerindex.php
. Como não pode , reescreve-o para o mesmo eindex.php
depois volta.php
novamente.fonte