4Debian.Info - Портал русскогоязычного сообщества Debian Карта сайта Контакты

Меню

Репозитории Debian

Скачать Debian

Установка Debian - Видео



Авторизация:

Новые статьи

Статьи в RSS

Новые комментарии

Новые уроки

Уроки в RSS


Вернутся к списку статей

Debian. Настройка связки apache + nginx

Если Вы администратор web-сервера то рано или поздно встает вопрос оптимизации расходов системных ресурсов потребляемых apache. А конкретно у нас есть желание отдавать файлы не обрабатывая их с помощью apache. Решением данной проблемы является установки связки apache + nginx, где nginx является в качестве front-end к apache.

Как будет работать nginx в связке с apache

Apache будет слушать только один ip(127.0.0.1) порт (например 81) - слушаем внутренний ip 127.0.0.1 для того, чтоб ни у кого небыло желания и возможности подключаться напрямую к apache, 81 порт будет слушать apache по той причине, что 80 порт теперь будет слушать nginx
Если будет запрос к файлу с разрешением: (bmp|jpg|jpeg|pjpeg|gif|ico|png|css|doc|txt|js|docx|rtf|ppt|pdf|swf) - можно изменить или дополнить список, тогда запрос к apache не будет производится и nginx сразу будет отдавать файл, что сэкономит время обработки запроса и системные ресурсы.
Все остальные запросы мы будем пробрасывать на apache (127.0.0.1:81), но предварительно установим пакет libapache2-mod-rpaf, который позволит передавать к apache не $_SERVER["REMOTE_ADDR"]=127.0.0.1 , а реальный ip клиента создавшего запрос.


Где взять nginx для Debian - репозиторий nginx
Хорошие ребята (системные администраторы) ведут сборку пакетов nxing и выкладывают все свои труды в репозиторий:
bash:
  1. deb http://ftp.ua.debian.org/debian-dou/ squeeze main
  2. deb-src http://ftp.ua.debian.org/debian-dou/ squeeze main

Установка ключей для репозитория nginx
bash:
  1. gpg --keyserver subkeys.pgp.net --recv-keys 0A3D4789
  2. gpg --armor --export 0A3D4789 | apt-key add -

После обновления списка пакетов в репозиториях вы сможете установить пакет nginx-plus, который в отличии от обычного пакета nginx собирается с дополнительными модулями ngx_loadavg_variables.patch и ngx_addon's_if_statment.patch.


Итак приступим к установке настройки связки nginx + apache
Первым делом надеюсь опыт в настройке сервера на apache есть.

Необходимо заставить слушать apache 127.0.0.1:81 :
bash:
  1. nano /etc/apache2/ports.conf

bash:
  1. NameVirtualHost 127.0.0.1:80
  2. Listen 80
меняем на
bash:
  1. NameVirtualHost 127.0.0.1:81
  2. Listen 81


Так же если у Вас уже существуют virtualhost в apache, необходимо подобным образов заставить слушать по 127.0.0.1:81, заменив:

bash:
  1. <VirtualHost *:80>
на
bash:
  1. <VirtualHost 127.0.0.1:81>


Установим libapache2-mod-rpaf чтоб apache получал реальный ip клиента, а не 127.0.0.1
bash:
  1. aptitude install libapache2-mod-rpaf

Теперь можно перезапустить apache:
bash:
  1. /etc/init.d/apache2 restart


Установим nginx-plus
bash:
  1. aptitude install nginx-plus

Перейдем к настройке хостов nginx, которые храняться в директории: /etc/nginx/site-enabled/

Создадим описание для хоста 127.0.0.1, правив уже существующие для него конфиги в apache и nginx.

Конфиг /etc/nginx/sites-enabled/default :
bash:
  1. server {
  2. listen 80;
  3. server_name 127.0.0.1;
  4.  
  5. access_log /var/log/nginx/localhost.access.log;
  6.  
  7. location ~* ^.+\.(bmp|jpg|jpeg|pjpeg|gif|ico|png|css|doc|txt|js|docx|rtf|ppt|pdf|swf|zip|rar|gz)$ {
  8. expires 10d;
  9. log_not_found on;
  10. try_files $uri
  11. /home/user/domains/127.0.0.1/www/$uri;
  12. }
  13.  
  14. error_page 500 502 503 504 /50x.html;
  15. location = /50x.html {
  16. root /var/www/nginx-default;
  17. }
  18.  
  19. location / {
  20. proxy_pass http://127.0.0.1:81/; # делаем переадресацию запросов на apache
  21. proxy_redirect off;
  22.  
  23. proxy_set_header Host $host;
  24. # Эти настройки необходимы, что бы из скриптов было видно реальные IP пользователя, а не фронт-части
  25. proxy_set_header X-Real-IP $remote_addr;
  26. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  27.  
  28. client_max_body_size 10m;
  29. client_body_buffer_size 128k;
  30.  
  31. proxy_connect_timeout 90;
  32. proxy_send_timeout 90;
  33. proxy_read_timeout 90;
  34.  
  35. proxy_buffer_size 4k;
  36. proxy_buffers 4 32k;
  37. proxy_busy_buffers_size 64k;
  38. proxy_temp_file_write_size 64k;
  39. }
  40.  
  41. }

Думаю понятно, что наш сайт лежит в директории: /home/user/domains/127.0.0.1/www

Теперь отредактируем настройки virtualhost в apache /etc/apache2/sites-enabled/000-default

bash:
  1. <VirtualHost 127.0.0.1:81>
  2.  
  3. DocumentRoot /home/user/domains/127.0.0.1/www
  4. ServerAlias localhost
  5. ServerName www.localhost
  6. ScriptAlias /cgi-bin/ /home/user/domains/127.0.0.1/www/cgi-bin/
  7.  
  8. <Directory "/home/user/domains/127.0.0.1/www">
  9. AllowOverride All
  10. Order Deny,Allow
  11. Allow from all
  12. Options All
  13. </Directory>
  14.  
  15. <Directory "/home/user/domains/127.0.0.1/www/cgi-bin/">
  16. AllowOverride None
  17. Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  18. Order allow,deny
  19. Allow from all
  20. </Directory>
  21.  
  22. <IfModule dir_module>
  23. DirectoryIndex index.php index.html index.cgi
  24. </IfModule>
  25.  
  26. #SuexecUserGroup valualit valualit
  27. ErrorLog "/home/user/domains/127.0.0.1/log/error.log"
  28. CustomLog "/home/user/domains/127.0.0.1/log/access.log" combined
  29. LogLevel warn
  30.  
  31. </VirtualHost>


Как Вы уже заметили ничего сложного в этом нет, осталось только перезапустить apache и nginx:
bash:
  1. /etc/init.d/apache2 restart
  2. /etc/init.d/nginx-plus restart


Если у Вас существуют уже virtualhost, главное не забыть сменить настройки, при работе через панели управления сложность возникает при добавлении и редактировании virtualhost в связки, поскольку по умолчанию настройки расчитаны на работу только с apache, но эту тему я расскажу позже на примере directadmin + apache + nginx.

Комментарии: Debian. Настройка связки apache + nginx

Только авторизованные пользователи могут оставлять комментарии!

Авторизация или Быстрая регистрация



Яндекс.Метрика
4Debian.Info
При полной или частичной перепечатке текстов статей и публикаций гиперссылка на www.4debian.info обязательна. | "4Debian.Info" | © 2018