Wordpress: store images in a subdomain
Самые популярные на сегодняшний день браузеры (Firefox, Chrome) создают по умолчанию от 2 до 4 соединений на каждый отдельный домен. Что в конечном итоге приводит к замедлению скорости загрузки страницы, тем более, если на странице размещается много графической информации.
Как вариант, можно использовать размещение фотографий на отдельных интернет-сервисах, типа Picasa или Flickr. В данном случае загрузка файлов будет идти параллельно, что приводит к существенному возрастанию скорости загрузки страниц.
Либо размещать медиафайлы на отдельном поддомене (subdomain). Как это правильно сделать в WordPress?
Создание поддомена
Создать поддомен довольно просто. Достаточно у регистратора доменных имен в панели управления зоной создать отдельную запись, если она еще не была создана:
Имя Тип записи Данные
* A 117.12.56.31

Таким образом мы указываем, что любые создаваемые поддомены будут указывать на определенный ip-адрес, обычно выбирается тот же, что и у основного домена.
На сервере указываем, что корню поддомена соответствует папка wp-content/uploads текущей установки wordpress.
Для nginx я прописал следующее:
server {
server_name domain.ru;
...
}
server {
server_name static.domain.ru;
if ($request_uri !~* "\.(jpe?g|gif|css|png|js|ico|pdf|zip|gz)$") {
rewrite ^(.*) http://www.domain.ru$1 permanent;
break;
}
location / {
root /var/www/domain.ru/web/wordpress/wp-content/uploads/;
access_log off;
expires max;
add_header Cache-Control private;
}
}
После чего указываем nginx перечитать файлы конфигурации:
/etc/init.d/nginx reload
И переходим к настройке WordPress.
Обновление конфигурации WordPress
На данном этапе нам необходимо будет указать WordPress на новое расположение медиафайлов. Для этого переходим в пункт меню Параметры-Медиафайлы:

Необходимо указать имя созданного поддомена в пункте Полный URL-путь к файлам. Теперь все вновь размещаемые файлы будут располагаться по новому адресу.
Изменяем адреса размещенных изображений
Если блог/сайт создается с нуля, то на этом месте можно остановиться и дальше уже не читать. Если же мы меняем настройки работающего блога, то нам необходимо изменить адреса изображений в базе данных.
Необходимо открыть phpMyAdmin, либо любой другой mysql-клиент, подключиться к базе данных. Перед всеми изменениями лучше заранее создать бекап базы данных, чтобы в случае ошибки, можно было ее восстановить. И теперь выполняем следующий sql-запрос:
UPDATE wp_posts
SET post_content = REPLACE(
post_content,
'http://www.domain.ru/wordpress/wp-content/uploads/',
'http://static.domain.ru/')
Не забудьте сменить имя таблицы, а точнее ее префикс на тот, что используете вы в своей базе данных, и прописать тот домен и поддомен, что используется у вас. Не забывайте так же проверять и точно указывать адрес папки uploads.
Теперь необходимо изменить пути к файлам, которые прописаны в Media Library. Для этого выполняем следующий sql-запрос:
UPDATE wp_posts
SET guid = REPLACE(
guid,
'http://www.domain.ru/wordpress/wp-content/uploads/',
'http://static.domain.ru/')
Redirect
Поисковые сервера помнят о изображениях, что были раньше на сервере и для корректной работы необходимо сделать редиректы со старых адресов на новые. Для этого в nginx прописываем следующую строку:
rewrite ^/wordpress/wp-content/uploads/(.*)$ http://static.domain.ru/$1 permanent;
На этом все!