Одним из самых распространенных способов разгрузки и оптимизации сервера, обслуживающего веб-приложения является добавление к Apache, часто используемому по умолчанию, Nginx. Nginx используется как прокси — он отдает статический контент, запросы к скриптам перенаправляет на бэкенд Apache.
После установки Nginx часто встречающейся проблемой является отсутствие изображений и стилей в PHPMYADMIN.
Не отображаются картинки и стили в PHPMYADMIN. Как исправить
PHPMYADMIN в таком случае продолжает быть работоспособен, однако внешний вид веб-интрефейса для работы с базами данных меняется. Чтобы это исправить необходимо внести изменения в виртуальные хосты всех сайтов, работающих с сервера, добавив в них секцию, которая будет отвечать за работы с phpmyadmin.
mcedit /etc/nginx/sites-available/example.com
Добавляем следующие строки:
location ^~ /phpmyadmin/
{
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
Добавляем симлинк
ln -s /etc/nginx/sites-availible/example.com /etc/nginx/sites-enabled/
Перезапускаем
nginx -s reload
После активации виртуального хоста и перезапуска nginx при обращении к phpmyadmin (example.com/phpmyadmin в браузере) будет происходить то же, что происходит при обработке запроса к любому сайту — статика (изображения и стили будут отдаваться фронтэнд сервером, скрипты — бэкенд сервером)
Конфигурационный файл виртуального хоста nginx целиком будет выглядеть примерно так:
server {
listen *:80; ## listen for ipv4
server_name example.com www.example.com;
access_log /var/log/nginx/access.log;
include /etc/nginx/static.conf;
location ^~ /phpmyadmin/
{
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
location /
{
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
root /var/www/web/sites/example.com/;
expires max;
}
}
Здесь реализована отдача статики nginx и проксирование к Apache, доступному на локальном адресе 123.0.0.1 на порт 8080