Do Apache para o Nginx: Erro 310, muitos redirecionamentos

1

Estou movendo um blog do Wordpress de um servidor da Web baseado no Apache para um servidor da Web baseado em Nginx . Passos fáceis, pensei:

  • scp da pasta fonte do WordPress, neste exemplo, /var/www/example.com, que é transferido para uma pasta com o mesmo nome no servidor remoto. Não problema com isso.

  • mysqldump do WordPress fonte base de dados. Não há problema com isso.

  • No servidor da Web nginx, eu crio um banco de dados (com o mesmo nome que o fonte um, só para manter tudo igual).

  • Eu configuro um blog WP padrão para ver se está tudo bem neste momento. Eu criar um bom
    /etc/nginx/sites-available/example.com arquivo de configuração (e link para sites habilitados, é claro). Que
    arquivo de configuração aponta para um diferente pasta (/ var / www / exampletemp)

  • Modifique meu arquivo de hosts do Windows para testar o novo blog no domínio em que estou interessado. O blog em example.com mostra bem, o blog WP padrão, é claro, mas com as URLs corretas.

  • E depois os passos cruciais. Primeiro eu editar /etc/nginx/sites-available/example.com por isso aponta agora para o backup real pasta (/var/www/example.com) - > (apenas mude os locais de raiz e diretiva fastcgi).

  • Então eu crio outro banco de dados, restaurar o banco de dados de origem neste novo, edite o arquivo wp-config.php em o /var/www/example.com apenas no caso há algo faltando, e reinicie o nginx.

O que eu ganho?

Um lindo, lindo "ERRO 310: muitos redirecionamentos": (

Eu posso ver a página de login em www.example.com/wp-login.php, mas meus usuários de origem não funcionam e não consigo acesso ao Painel do WordPress. Eu modifiquei, por exemplo, uma conta de administrador do phpMyadmin, configurando uma nova senha e selecionando a criptografia MD5, e embora isso tenha funcionado quando eu mudei do Apache para Apache ou Nginx para Nginx, desta vez não foi.

Eu realmente não entendo porque há esse erro Muitos redirecionamentos. Eu tentei desativar todos os plugins (renomeando o / wp-content / plugins para / wp-content / oldplugins, ou desativando todos eles com uma consulta SQL) mas sem sorte novamente.

Desculpe pela longa pergunta. Espero ter me esclarecido ...

Edit: Este é o arquivo de configuração nginx, apenas no caso de:)

server {

            listen   80;
            server_name  www.example.com;
            rewrite ^/(.*) http://example.com/$1 permanent;

           }


server {
       listen   80;
       access_log  /var/www/example.com/log/access.log;
       error_log      /var/www/example.com/log/error.log info;
       server_name     example.com;
       root /var/www/example.com;

       location / {
          index index.php;
          # if the requested file exists, return it immediately
          if (-f $request_filename) {
                  break;
          }

        # all other requests go to WordPress
        if (!-e $request_filename) {
           rewrite . /index.php last;
           }
      }

      ## Images and static content is treated different
      location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
               access_log        off;
               expires           30d;
               root /var/www/example.com;
      }


## Parse all .php file in the /var/www directory
    location ~ .php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   backend;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/example.com$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  HTTP_HOST        example.com;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     on;
        fastcgi_read_timeout 180;

    }


    ## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny  all;
    }
}

Estou pensando em outra resposta à minha pergunta : A pasta WP de origem no servidor Apache tem apache:apache como user: group e depois de "scping" essa pasta no meu novo servidor Nginx , esse usuário e esse grupo não são mais válidos. Eu fiz o chown -R www-data:www-data adequado para a nova pasta WP, mas ... isso poderia ser uma sugestão para a resposta?

    
por javipas 03.02.2011 / 16:47

2 respostas

2

Tente:

location / {
    try_files $uri $uri/ /index.php;
}
    
por 03.02.2011 / 18:34
1

O nginx passa um cabeçalho "Host" adequado para o servidor FastCGI? O Wordpress verifica esse cabeçalho e executa um redirecionamento se não for igual a uma configuração no banco de dados. Parece que você deve verificar seu /etc/nginx/fastcgi_params e definir algo como fastcgi_param HTTP_HOST example.com; .

    
por 03.02.2011 / 17:01