Веб-сервера Nginx и Apache вместе как фронтенд и бэкенд

Настойка Nginx как фронтенд и Apache как бэкенд в CentOS и Ubuntu

Меня периодически спрашивают, как «подружить» Nginx и Apache, да так, чтобы Nginx был фронтендом, а Apache бэкендом на сервере. Ведь Apache довольно тяжёлый, но у него есть многие нужные для большинства сайтов функции. А Nginx очень быстрый и мог бы хранить всю статику, чтобы Apache брал на себя меньше нагрузки. Всё это, разумеется, сказывается на скорости загрузки сайта у посетителей. Ниже представлю настройки для произвольного сайта как из файла конфигурации Nginx, так и Apache. Я не буду здесь вдаваться в подробности кеширования, так как если вы попали на эту страницу, то прекрасно во всём разбираетесь, но вам необходима небольшая подсказка. Ниже представляю ту самую подсказку.

Кстати, если хотите получать информацию о моих новых статьях, то можете подписаться и получать уведомления на емейл, или же подписаться в Телеграм.

Nginx

Обратите внимание, что сначала запрос идёт на ваш ip, на котором находится сайт. Это должен быть реальный ip вашего сервера, которому мы присваиваем 80-ый порту. А потом идёт запрос на локальный ip, которому мы присваиваем 81-ый порт.

.....
server {
listen 111.222.333.444:80;
server_name ваш_сайт.ru www.ваш_сайт.ru;
charset UTF-8;
error_page 404 = @fallback;
location / {
proxy_pass http://127.0.0.7:81;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
 
proxy_buffer_size 8k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;
}
location ~* ^.+\.(bmp|jpg|jpeg|gif|ico|png|css|doc|txt|js|zip|iso|tgz|gz|rar|bz2|7z|xls|exe|pdf|ppt|tar|wav|avi|rtf|mp3|mp4|mov|mpeg|mpg|eot|ttf|woff|woff2)$ {
expires 300d;
root /var/www/Папка/Папка/Папка/ваш_сайт.ru;
proxy_redirect off;
access_log off;
}
location @fallback {
proxy_pass http://127.0.0.7:81;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
.....

 

Apache

Здесь вся работа происходит на вашем локальном ip, находящимся на 81-ом порту. В Nginx мы уже это указали. Локальный ip указанный в Nginx и в Apache должны совпадать для одного и того же домена.

.....
NameVirtualHost 127.0.0.7:81
.....
ServerName ваш_сайт.ru
AddDefaultCharset UTF-8
CustomLog /dev/null combined
DocumentRoot /var/www/Папка/Папка/Папка/ваш_сайт.ru
ErrorLog /dev/null
ServerAdmin [email protected]_сайт.ru
ServerAlias www.ваш_сайт.ru
SuexecUserGroup Пользователь Группа
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
AddType application/x-httpd-php-source .phps
php_admin_value open_basedir "/var/www/Папка/Папка:."
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f [email protected]_сайт.ru"
php_admin_value upload_tmp_dir "/var/www/Папка/Папка/mod-tmp"
php_admin_value session.save_path "/var/www/Папка/Папка/mod-tmp"
.....

Рейтинг: 5.0 (9 проголосовавших)
Sending
  • Дмитрий Эдуардович

    большое спасибо! то что искал