Установка и настройка Nginx. Nginx frontend + Apache backend. Установка mod_rpaf
Интро
Легкие веб-сервера набирают обороты. По статистике Google Online Security Blog в Интернете стоит около 4% веб серверов на Nginx. Всем известный rambler.ru крутится на nginx. Nginx действительно отличный веб-сервер который достоин внимания.
Перед нами стоит задача, поставить Nginx как frontend что бы он обрабатывал только некоторые типы файлов, как мы знаем типы файлов – css, js, jpg, gif, exe, tar, pdf и другие подобные – это статика, обрабатывая такие типы файлов легким веб-сервером nginx мы снизим нагрузку на веб-сервер Apache и получим хороший прирост к производительности.
Шаг 1. Установка Nginx
Установка Nginx занимает несколько секунд.
Debian:
apt-get install nginx
FreeBSD:
cd /usr/ports/www/nginx make install clean
Конфигурационный файл nginx вы найдете у себя в
Debian – /etc/nginx/nginx.conf
FreeBSD – /usr/local/etc/nginx/nginx.conf
Шаг 2. Подготовка Apache.
Настроим Apache, открываем конфигурационный файл, имя файла зависит от версии Apache и платформы. У меня вторая ветка Apache (2.2.x) на Debian и FreeBSD платформах.
Debian – /etc/apache2/ports.conf
FreeBSD – /usr/local/etc/apache2/httpd.conf
Находим строку вида Listen 80.100.100.10:80 где “80.100.100.10″ IP вашего сервера и устанавливаем порт 81
Listen 80.100.100.10:81
Больше ничего не меняйте в конфиге Apache.
Шаг 3. Настройка Nginx
server {
listen 80.100.100.10:80; # ip вашего сервера и порт
server_name myexample.com www.myexample.com; # Имя вашего домена с www и без
location / {
proxy_pass http://80.100.100.10:81/; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarder_for;
}
location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ { # Обрабатываемые типы файлов
root /home/www/myexample.com/httpdocs; # Путь к коренвевому каталогу вашего сайта
}
}Строки заголовка запроса X-Real-IP и X-Forwarded-For нужны будут вам если вы в своих скриптах используете информацию об IP-адресе посетителя или хотите скрыть от скриптов разделение на фрондэнд/бэкэнд и видеть нормальные IP пользователей, вместо IP фронтэнда, в таком случае вам необходимо будет дополнительно установить и настроить модуль mod_rpaf.
Шаг 4. Установка mod_rpaf
FreeBSD
cd /usr/ports/www/mod_rpaf make install clean
После установки откройте конфигурационный файл Apache и проверьте наличие следующей строки :
LoadModule rpaf_module libexec/apache22/mod_rpaf.so
если такой строки нет, добавьте, но указывайте свой путь к файлу mod_rpaf.so
И немного ниже добавьте следующие строки предварительно заменив “80.100.100.10″ на свой IP
RPAFenable On RPAFsethostname On RPAFproxy_ips 80.100.100.10 RPAFheader X-Forwarded-For
Примеры конфигураций nginx (frontend version)
Минимальная рабочая конфигурация для одного домена
Конфигурация nginx для одного домена с возможностью скрывать ip frontend-a и правильно отображать айпи пользователей (При условии что настроен mod_praf для Apache)
Конфигурация nginx с теми же возможностями что и у варианта “2″ но для нескольких доменов и поддоменов
Конфигурация nginx с теми же возможностями что и у варианта “3″ но с более широкими возможностями настройки разных интересных переменных для оптимизации nginx веб-сервера
апреля 4, 2008 at 16:20
Вроде все понятно. А если у меня на сервере три сетевых карточки! Как задавать три ип адресса?
апреля 5, 2008 at 18:06
В Apache :
Listen 80.100.100.1:81
Listen 80.100.100.2:81
Listen 80.100.100.3:81
сентября 24, 2008 at 14:21
Можно ли как-нибудь настроить Nginx, чтобы при отсутствии настроек он автоматически кидал на apache? Т.е. у меня apache на 81 порте и соответственно его не видно, в конциге server { … } прописываю штук 5 нужных мне доменов и они работают, а остальные я прописывать не хочу. Для этих доменов требуется тупо перенапрвлять пользователей на apache без участия Nginx.
октября 23, 2008 at 22:52
не знаю насколько это правильно, я сделал вот так
listen 80 default;
server_name .ru;#кажется * не работает
location / {
proxy_pass http://127.0.0.1:8080/ #у меня на порту 8080 вертится
}
location ~* \.(gif|jpg|….)$
{
root /www/$host/;#соответсвенно папки у меня совпадают с именем хоста
}
марта 25, 2009 at 17:07
До установки nginx
для корня / генерил статичный index.html и апач на него попадал через .htaccess:
RewriteCond %{HTTP_HOST} ^xxx.com$
RewriteRule ^$ /index.html [L]
После установки nginx
хочу nginx направить на статичный index.html без апача, такой конфиг не сработал:
location ~$ {
root /usr/local/www/data/html/index.html;
}
Что делать, Достоевский?
июля 19, 2009 at 15:19
location ~* ^.+\.(html)$ {
root /usr/local/www/data/html/;
}
августа 1, 2009 at 13:38
Скажите есть пара вопросов:
1) Когда я проверяю конфигурацию nginx -t, я вижу в консоле ошибки (permission denied) к файлам лога и run (Я просто перепрописал их в домашнюю директорию, и не знаю правильно ли это)
2) По поводу настройки апача. У меня там есть такие дериктивы
ServerName pravozahist.in.ua
DocumentRoot /var/www/oleg/data/www/pravozahist.in.ua
SuexecUserGroup oleg oleg
CustomLog /var/www/httpd-logs/pravozahist.in.ua.access.log combined
ErrorLog /var/www/httpd-logs/pravozahist.in.ua.error.log
ServerAlias http://www.pravozahist.in.ua *.pravozahist.in.ua
ServerAdmin oltarasenko@gmail.com
AddDefaultCharset utf-8
ScriptAlias /cgi-bin/ /var/www/oleg/data/www/pravozahist.in.ua/cgi-bin/
VirtualDocumentRoot /var/www/oleg/data/www/pravozahist.in.ua/%1
WSGIScriptAlias / “/var/www/oleg/data/.wsgi/pravozahist”
WSGIDaemonProcess pravozahist user=oleg threads=5 stack-size=524288 maximum-requests=200 ina\
ctivity-timeout=500 display-name=%{GROUP}
WSGIProcessGroup pravozahist
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
Alias /site_media/ “/var/www/oleg/data/www/pravozahist.in.ua/site_media/”
Должен ли я как то их перепрописывать?
3) Как запустить nginx? Нужно ли писать старт скрипт
4) И еще вопрос: как nginx определяет что он сам обслуживает а что делает апач? Вот я например хочу что б он отдавал статику в основном. как это правильно прописать? Не будет ли конфликта с дерективами апача (вот этими Alias /site_media/ “/var/www/oleg/data/www/pravozahist.in.ua/site_media/”)
Очень жду ответа!
августа 1, 2009 at 13:41
Он похоже сьело таги. Там где конфигурация апача – это прописаны виртуальные хосты.
августа 9, 2009 at 13:42
Приведите пожалуйста пример установки mod_rpaf на Debian.
декабря 20, 2009 at 13:20
После установки mod_rpaf так и не понял где надо в httpd.conf вставить настройки от этого модуля. У меня на форуме есть проверка IP, в итоге у всех пользователей в настоящее время последний IP – 127.0.0.1 Подскажите решение проблемы.