Настройка Nginx frontend + Apache backend для Debian

Дата: 04/02/2011
Тема: Linux

Задача снизить нагрузку на Apache и отдавать статический контент с помощью Nginx, что значительно экономит системные ресурсы за счет того, что после того как пришел запрос от клиента, Nginx передает запрос apache и быстро получает ответ.
В итоге Apache после того как отдал ответ Nginx освобождает память, далее с клиентом взаимодействует web сервер nginx, который и написан для раздачи статического контента, большому количеству клиентов, при незначительном потреблении системных ресурсов.

Установка Nginx
apt-get install nginx

Настройка Nginx
Сначала отредактируем файл виртуальных хостов, описывать все виртуальные хосты которые есть в настройка apache не обязательно, просто заставим nginx слушать нужный нам айпи адрес.
/etc/nginx/sites-enabled/default

 

server {
        # здесь пишем ip адрес сервера на котором стоит nginx
	listen   192.168.0.100:80; 
        # путь куда будем писать журнал
	access_log  /var/log/nginx/localhost.access.log; 

      location / {
         # ip адрес сервера где стоит apache в данном случае он стоит на том же сервере где и nginx и слушает только localhost (127.0.0.1)
         # порт можно указать любой из незанятых в данном примере это 80 порт на петлевом интерфейсе (localhost)
	    proxy_pass			http://127.0.0.1:80/; 
	    proxy_redirect		off;
 

	    proxy_set_header	Host		$host;
	    proxy_set_header	X-Real-IP	$remote_addr;
	    proxy_set_header	X-Forwarded-For	$proxy_add_x_forwarded_for;
	}

	error_page   500 502 503 504  /50x.html;
	location = /50x.html {
		root   /var/www/nginx-default;
	}

}

  

Затем файл /etc/nginx/nginx.conf
Добавим в секцию http параметр client_max_body_size 100m;
Для того чтоб не было ошибки 413, так как по умолчанию стоит ограничение на заливаемые файлы 1мб.
 

http {
    include       /etc/nginx/mime.types;

    access_log	/var/log/nginx/access.log;

    sendfile        on;
    #tcp_nopush     on;
    client_max_body_size 100m;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
 
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Установка mod_rpaf

Данный модуль необходим по следующей причине: запросы к apache приходят с ip адреса на котором работает nginx, соответственно в журнальных файлах apache будет фигурировать только ip nginx сервера, что не хорошо. Также без использования данного модуля начнутся проблемы со скриптами в которых используется ip адрес посетителя и перестанет правильно работать механизм ограничения доступа по ip адресам с помощью .htaccess.


apt-get install libapache2-mod-rpaf

Настройка mod_rpaf
Приводим файл apache/mods-enabled/rpaf.conf к такому виду
 

        RPAFenable On
        RPAFsethostname On
        RPAFproxy_ips 127.0.0.1

Настройка Apache
В файле конфигурации Apache /etc/apache2/ports.conf замените


Listen :80 

на

Listen 127.0.0.1:80

127.0.0.1 - IP-адрес, с помощью которого компьютер может обратиться по сети к самому себе, независимо от есть ли у него подключения к сети или нет.

:80 - порт прослушивания, как написано выше может быть любой у меня это 80, если выбран другой порт например 8990 то и в nginx нужно указать  "proxy_pass http://127.0.0.1:8990/; "

И проверим файл описания виртуальных хостов
/etc/apache2/sites-enabled/default
И убедимся что секция VirtualHost не содержит ip адреса и порта, если да то вместо 192.168.0.100:80 ставим символ " * "

Запуск
Сначала останавливаем наши сервера
/etc/init.d/nginx stop
и
/etc/init.d/apache2 stop

И запускам, сначала nginx
/etc/init.d/nginx start
потом
/etc/init.d/apache2 start
 



Это статья "Домашняя страничка Andy"
https://andy.od.ua

URL этой статьи: https://andy.od.ua/news_20.html

Яндекс.Метрика