Andy home page
Главное меню
Главная
Категории
Статьи
Файлы
Ссылки
Архив
Поиск
Галлерея
Гостевая
Опросы
Сетевой калькулятор
NES Emulator
Музей
Обратная связь

Кто на сайте
Добро пожаловать,
Гость

ВойтиВойти
РегистрацияРегистрация
Забыли Пароль?Забыли Пароль?

Посетителей онлайн
ПользователейПользователей: 0
ГостейГостей: 2
_BOTБотов: 0
ВсегоВсего: 2

Server Time
Время: 18:57:50
Дата: 23/04/24
Календарь
Ссылки

Настройка Nginx frontend + Apache backend для Debian
Напечатать текущую страницу
Linux

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



Задача снизить нагрузку на 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
 


При копировании материалов ссылка на сайт обязательна


Добавлена: 04/02/2011 · Автор: admin

Просмотров: 21777

Оценить:
Social net
Сатьи

Все статьи
Друзья
Сайт skeletora
ОНАПТ
OLD-HARD.RU


Webmaster Andy
Copyright©1998-2014 Odessa


Открытие страницы: 0.59 секунды и 9 запросов к БД
Хостинг
Регистрация домена
free counters