Назад | Перейти на главную страницу

С Apache на Nginx: ошибка 310, слишком много перенаправлений

Я перемещаю блог Wordpress с веб-сервера на базе Apache на веб-сервер на базе Nginx. Простые шаги, подумал я:

Что я получу?

А великолепно, красиво «ОШИБКА 310: слишком много перенаправлений» :(

Я вижу страницу входа на www.example.com/wp-login.php, но мои исходные пользователи не работают, и я не могу получить доступ к панели управления WordPress. Я изменил, например, учетную запись администратора из phpMyadmin, установив новый пароль и выбрав шифрование MD5, и хотя это сработало, когда я перешел с Apache на Apache или Nginx на Nginx, на этот раз этого не произошло.

Я действительно не понимаю, почему возникает ошибка "Слишком много перенаправлений". Я пытаюсь отключить все плагины (переименовав / wp-content / plugins в / wp-content / oldplugins или отключив их все с помощью SQL-запроса), но снова не повезло.

Простите за длинный вопрос. Надеюсь, я ясно выразился ...

Изменить: это файл конфигурации nginx, на всякий случай :)

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;
    }
}

Я думаю в еще один ответ на мой вопрос: Исходная папка WP на веб-сервере Apache имеет apache:apache как пользователь: группа, и после "переноса" этой папки на мой новый веб-сервер Nginx этот пользователь и эта группа больше не действительны. Я сделал правильный chown -R www-data:www-data в новую папку WP, но ... может ли это быть намеком на ответ?

Пытаться:

location / {
    try_files $uri $uri/ /index.php;
}

Передает ли nginx правильный заголовок «Host» серверу FastCGI? Wordpress проверяет этот заголовок и выполняет перенаправление, если он не соответствует настройке в БД. Похоже, вам стоит проверить свой /etc/nginx/fastcgi_params и установите что-то вроде fastcgi_param HTTP_HOST example.com; там.