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

Возможен ли обратный прокси WP multisite на отдельный сервер с NGINX?

Недавно осуществил миграцию многосайтовой сети, но обнаружил, что на некоторых сайтах используется тема, несовместимая с серверной версией PHP.

Пока я работаю над долгосрочным исправлением, я бы хотел использовать NGINX для обратного прокси-сервера неработающих сайтов на старый сервер, сохраняя при этом текущие рабочие сайты, указывающие на новый сервер.

Когда я пробую следующее, я могу попасть на страницы моего старого сайта, но статические ресурсы (js, css и т. Д.) Возвращают 404, и я не могу получить доступ к каким-либо страницам / wp-admin. Что я должен изменить?

Вот конфигурация всего блока сервера. Сохранить для location /oldsite, Я использую этот конфиг и для других серверных блоков. В этом случае все мои файлы WordPress хранятся в отдельном отдельном /wordpress/ каталог, а /wp-content/ хранится в корне каждого проекта.

В данном случае это установки из нескольких подкаталогов.

server {
    server_name mydomain.com www.mydomain.com;

    root /var/www/html/wordpress/mydomain.com/wordpress/;

    location /oldsite {
        proxy_pass http://my.old.ip;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

     index index.php index.html;

     location /wp-content {
        root /var/www/html/wordpress/mydomain.com/;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        #If a file isnt found, 404
        try_files $uri =404;
        #Include Nginxs fastcgi configuration
        include /etc/nginx/fastcgi.conf;
    }

    if (!-e $request_filename) {
        # Don't use $uri here, see https://github.com/yandex/gixy/issues/77
        rewrite /wp-admin$ $scheme://$host$request_uri/ permanent;
        rewrite ^(/[^/]+)?(/wp-.*) $2 last;
        rewrite ^(/[^/]+)?(/.*\.php) $2 last;
    }

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

}

Вам также необходимо передать на свой старый сервер каталоги, соответствующие загруженным файлам старого сайта и каталогам тем. И, возможно, каталоги плагинов, если они обслуживают статический контент или имеют файлы PHP, которые вызываются напрямую, а не включены в WordPress.

Например (использует регулярное выражение, поэтому не так эффективно, как могло бы быть, но временно, верно?):

location ~ (/oldsite/|/wp-content/uploads/sites/5/|/wp-content/themes/oldsitetheme/) {