Я перемещаю блог Wordpress с веб-сервера на базе Apache на веб-сервер на базе Nginx. Простые шаги, подумал я:
scp исходной папки WordPress, в этом примере /var/www/example.com, которая переносится в папку с тем же именем на удаленном веб-сервере. Нет проблем с этим.
mysqldump исходной базы данных WordPress. Нет проблем с этим.
На веб-сервере nginx я создаю базу данных (с тем же именем, что и исходная, просто чтобы все было одинаково).
Я настраиваю блог WP по умолчанию, чтобы проверить, все ли в порядке на данный момент. Я создаю правильный
/etc/nginx/sites-available/example.com файл конфигурации (и, конечно, ссылки на сайты с поддержкой). Который
config указывает на другую папку (/ var / www / exampletemp)
Измените мой файл хостов Windows, чтобы протестировать новый блог в интересующем меня домене. Блог на example.com показывает нормально, конечно же, блог WP по умолчанию, но с правильными URL-адресами.
А затем решающие шаги. Сначала я редактирую /etc/nginx/sites-available/example.com, чтобы теперь он указывал на настоящую папку резервных копий (/var/www/example.com) -> (просто измените корневые местоположения и директиву fastcgi).
Затем я создаю другую базу данных, восстанавливаю исходную базу данных в этой новой, редактирую файл wp-config.php на /var/www/example.com на случай, если чего-то не хватает, и перезапускаю 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;
там.