Цель:
— Установить связку nginx frontend (отдача статики) + apache22 (+php52) backend (обработка php)
— Вернуть в логи apache реальный ip-адрес запроса, а не ip-адрес nginx.
1) Устанавливаем nginx
|
|
Появится окно выбора нужных опций. Я убираю использование протокола Ipv6 и нажимаю Ок:
2) Устанавливаем apache22 и php52 если они не установлены.
Детальная установка описана в статье — Установка веб-сервера apache22+php52
Далее:
Во всех, используемых у Вас, конфигах apache и виртуалхостов, меняем порт прослушивания c 80 на 88:
httpd.conf:
|
|
httpd-vhosts.conf:
|
|
soulbrat.org.ua.conf:
|
|
3) Ставим mod_rpaf для решения проблемы определения рального IP для apache
|
|
После установки идем в:
|
|
находим строку:
|
|
и раскоментируем её.
|
|
Если, при перезапуске апача у Вас возникает ошибка «Can’t locate API module structure `rpaf2_module’ in file /usr/local/libexec/apache22/mod_rpaf2.so»
Проверте, что бы название модуля rpaf_module — было без цифры «2″ . Этот баг исправили в новой версии модуля.
В конце файла httpd.conf, добавляем следующие строки:
|
|
сохраняем httpd.conf и закрываем.
4) Сохраняем с другим именем созданный конфиг nginx.conf и создаем свой:
|
|
создаем свой конфиг:
|
|
|
|
Создаем необходимые каталоги:
|
|
Добавляем nginx в автозапуск:
|
|
Теперь необходимо создать нужные виртуалхосты, все которые прописаны в apache. Создадим один, по этому примеру создаются и остальные:
|
|
|
|
Если вы прописали использование фильтров default accept_filter=httpready
необходимо включить их в ядро командами:
|
|
Проверяем:
|
|
Что бы модули грузили автоматически, при перезагрузке системы, пропишите запуск в файл loader.conf:
|
|
|
|
Теперь все готово к запуску.
Перезагружаем apache и запускаем nginx:
|
|
|
|
Если все запустилось без ошибок,значит все найстроки прописаны верно. Можете проверяь работу вашего сайта на новой связке nginx (frontend) + apache (backend)
=================
Несколько советов по работе с алиасами nginx:
=================
Конструкция алиаса:
|
|
просто отдаст запрос апачу на алиас phpmyadmin, используя адрес локалхоста. Если вам необходимо передавать в заголовке имя, передаваемое к проксируемому серверу, пропишите так:
|
|
Еще пример, если для сбора статистики вы используете awstats, конструкция выглядит так:
location ^~ /awstatsicons {
alias /usr/www/soulbrat.org.ua/awstats/icons/;
access_log off;
}
location ^~ /awstatscss {
alias /usr/www/soulbrat.org.ua/awstats/css/;
access_log off;
}
location ^~ /awstatsclasses {
alias /usr/www/soulbrat.org.ua/awstats/classes/;
access_log off;
}
По материалам: soulbrat.org.ua/?p=971
FreeBSD: настройка и конфигурирование NGINX + Apache
Настройка выполняется на:
# uname -v
FreeBSD 9.1-PRERELEASE
Apache:
# httpd -v
Server version: Apache/2.2.24 (FreeBSD)
Server built: Apr 8 2013 10:01:39
Предполагается, что Apache уже установлен и настроен по статье FreeBSD: Apache + mpm_worker + PHP + mod_fcgid или FreeBSD: Apache+MySQL+PHP (LAMP) + phpMyAdmin.
Установим NGINX:
# cd /usr/ports/www/nginx && make config-recursive
Описание опций:
[ ] DEBUG Режим отладки. Полезно на стадии тестирования и отладки конфигурации
[ ] IPV6 Поддержка протокола IP 6-й версии
[ ] GOOGLE_PERFTOOLS Включить поддержку google-perftools
[X] HTTP_MODULE Включение функций HTTP сервера
[ ] HTTP_ACCESSKEY_MODULE Модуль для генерации защищенных ссылок
[ ] HTTP_ADDITION_MODULE Фильтр, добавляющий текст до и после ответа
[ ] HTTP_DAV_MODULE Модуль для поддержки WebDAV методов PUT, DELETE, MKCOL, COPY и MOVE
[ ] HTTP_EVAL_MODULE Разбирает ответ проксируемого сервера или memcached сервера на переменные
[ ] HTTP_FANCYINDEX_MODULE Модуль позволяющий строить листинг файлов с добавлением стилей
[ ] HTTP_FLV_MODULE Модуль для стриминга флэш-видео в формате flv
[ ] HTTP_GZIP_STATIC_MODULE Модуль для отдачи клиенту предварительно сжатого файла с тем-же именем но с расширением «.gz».
[ ] HTTP_MOGILEFS_MODULE Поддержка файловой системы mogilefs.
[ ] HTTP_PERL_MODULE Встроенный Perl.
[ ] HTTP_RANDOM_INDEX_MODULE Модуль, выдает в качестве индексного файла, случайный файл из каталога.
[ ] HTTP_REALIP_MODULE Модуль для замены адреса клиента в заголовке.
[ ] HTTP_RESPONSE_MODULE Модуль для отдачи произвольного текста, прописанного в директивы модуля.
[X] HTTP_REWRITE_MODULE Модуль для изменения URI с помощью регулярных выражений, выдачи редиректов и выбора конфигурации в зависимости от переменных.
[ ] HTTP_SECURE_LINK_MODULE Модуль для проверки правильности запрошенной ссылки.
[ ] HTTP_SSL_MODULE Модуль поддержки SSL.
[X] HTTP_STATUS_MODULE Модуль, показывающий информационную страницу о текущем статусе Nginx.
[ ] HTTP_SUB_MODULE Модуль для замены в ответе, одной строки, на другую.
[ ] HTTP_UPLOAD_MODULE Модуль для аплоадов multipart/form-data.
[ ] HTTP_UPLOAD_PROGRESS В силу особенностей реализации nginx, без данного модуля не получится организовать показ статуса загрузки файлов.
[ ] HTTP_UPSTREAM_FAIR Модуль для балансировки нагрузки. Отправляет входящие запросы на наименее загруженный бакэнд.
[ ] HTTP_UPSTREAM_KEEPALIVE Поддержка keepalive- соединений с бакэндами, в том числе memcached.
[ ] HTTP_XSLT_MODULE XSLT фильтр.
[ ] HTTP_ZIP_MODULE Модуль для создания zip архивов «на лету».
[ ] MAIL_MODULE Модуль для работы nGinx в качестве почтового прокси сервера.
[ ] MAIL_IMAP_MODULE Модуль IMAP4 прокси.
[ ] MAIL_POP3_MODULE Модуль POP3 прокси.
[ ] MAIL_SMTP_MODULE Модуль SMTP прокси.
[ ] MAIL_SSL_MODULE Модуль для поддержки SSL/TLS для POP3/IMAP/SMTP.
[ ] PASSENGER_MODULE Аналог апачевского mod_rails ( Phusion Passenge ).
[X] WWW Стандартный набор HTML файлов для проверки.
Оставляем всё по-умолчанию, жмём Enter.
Устанавливаем:
# make BATCH=yes install clean
Редактируем файл конфигурации сервера Apache — /usr/local/etc/apache22/httpd.conf. В нём меняем такие параметры:
Listen 127.0.0.1:8080
и
NameVirtualHost 127.0.0.1:8080
Т.е. теперь Apache будет слушать только локальный адрес 127.0.0.1 и только порт 8080.
Теоретически (точнее — раньше, на другом сервере, так и было) можно назначить и тот же порт 80, на котором будет работать сам NGINX. Но на практике — это может привести к сложностям во время настройки. Кроме того, удобнее отслеживать источник проблем, в случае их возникновения, когда оба сервера работают на разных портах.
В случае ошибки такого вида:
[Mon Apr 08 12:55:17 2013] [warn] NameVirtualHost 127.0.0.1:80 has no VirtualHosts
Проверьте конфигурацию VirtualHost-ов, например — в файле /usr/local/etc/apache22/extra/httpd-vhosts.conf — для виртуалхостов так же необходимо установить адрес 127.0.0.1:8080.
Проверяем верность конфиграционных файлов Apache:
# apachectl configtest
Syntax OK
Если всё ОК — то перезагружаем его:
# apachectl restart
Переходим к настройке NGINX.
Главный конфигурационный файл находится в каталоге /usr/local/etc/nginx/ — nginx.conf.
Приводим его к такому виду:
user www www;
worker_processes 1;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
use kqueue;
}
http {
include mime.types;
default_type application/octet-stream;
client_header_timeout 300;
client_header_buffer_size 16k;
client_max_body_size 8m;
client_body_buffer_size 256k;
client_body_timeout 300;
proxy_read_timeout 360;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_body_temp_path /var/nginx/client_body_temp;
proxy_temp_path /var/nginx/proxy_temp;
limit_conn_zone $binary_remote_addr zone=http:2m;
#————————————-
server {
listen 178.***.***.114:80 default accept_filter=httpready;
server_name akira;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
client_body_temp_path /var/nginx/client_body_temp;
proxy_temp_path /var/nginx/proxy_temp;
}
}
#————————————-
server {
listen 178.***.***.114:8080;
server_name www.domain.co.ua domain.co.ua;
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|js|swf|avi|mp3|flv|mpeg)$ {
root /usr/local/www/users/domain/domain.co.ua;
try_files $uri @apache;
}
location ~ /\.ht {
deny all;
}
location / {
limit_conn http 5;
proxy_pass http://127.0.0.1/;
proxy_redirect off;
proxy_set_header Connection close;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
proxy_set_header X-Forwarded-Protocol $scheme;
}
location @apache {
limit_conn http 100;
proxy_pass http://127.0.0.1;
proxy_redirect off;
proxy_set_header Connection close;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
proxy_set_header X-Forwarded-Protocol $scheme;
}
}
#————————————-
}
В данном примере описан только один виртуалхост — domain.co.ua. Остальные параметры можно посмотреть на оф. странице NGINX. Для каждого обслуживаемого NGINX-ом виртуалхоста необходимо добавлять свой аналогичный блок директив.
Проверяем на ошибки:
# nginx -t
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
И перезапускаем NGINX:
# service nginx onerestart
В случае ошибки такого вида:
nginx: [alert] setsockopt(SO_ACCEPTFILTER, «httpready») for 178.***.***.114:80 failed, ignored (2: No such file or directory)
Ответ можно найти в статье NGINX: «httpready» failed, ignored: No such file or directory.
Итак — перестартуем NGINX:
# service nginx onerestart
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Stopping nginx.
Waiting for PIDS: 14539.
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Starting nginx.
Проверяем:
# ps aux | grep nginx
root 34423 0.0 0.0 27068 4476 ?? IsJ 1:18PM 0:00.00 nginx: master process /usr/local/sbin/nginx
www 34424 0.0 0.0 27068 5904 ?? IJ 1:18PM 0:00.00 nginx: worker process (nginx)
root 38826 0.0 0.0 10180 768 11 LL+J 1:20PM 0:00.00 grep nginx
И проверим какие порты прослушиваются:
# netstat -Lan | grep 80
tcp4 0/0/128 178.***.***.114.80
Последний штрих — установка модуля RPAF для Apache, который позволит ему правильно определять IP пользователей.
Устанавливаем:
# cd /usr/ports/www/mod_rpaf2 && make install clean
После установки редактируем файл /usr/local/etc/apache22/httpd.conf и в него добавляем строки:
LoadModule rpaf_module libexec/apache22/mod_rpaf2.so
И ниже:
Timeout 128
KeepAlive Off
UseCanonicalName Off
HostnameLookups Off
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 178.***.***.114
RPAFheader X-Real-IP
В строке RPAFproxy_ips указываем внешний IP сервера, на котором сейчас работает NGINX.
Проверяем:
# apachectl configtest
Syntax OK
Перезагружаем:
# apachectl restart
Проверим как работает модуль. В файле лога старые записи выглядят как:
178.***.***.114 — — [08/Apr/2013:13:47:03 +0000] «GET /index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.0″ 200 2524 «http://domain.org.ua/» «Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0″
Т.е. вместо IP клиента — Apache получает адрес самого сервера. После добавления модуля:
194.***.***.214 — — [08/Apr/2013:14:06:24 +0000] «GET /index.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.0″ 200 2146 «http://domain.org.ua/» «Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0″
Добавляем NGINX в автозапуск — редактируем файл /etc/rc.conf:
nginx_enable=»YES»
На этом настройку можно считать завершённой.
По материалам: rtfm.co.ua/freebsd-nastrojka-i-konfigurirovanie-nginx-apache/
Ария — Страж Империи «Пeрл Харбор»
Ария — Страж Империи «Пeрл Харбор»
«Улучшения» (ухудшения) от мтс за июнь:
• «Безлимит в сети МТС на одни сутки» — 3,19 грн — новое обязательное условие-абонплата для следующих тарифов Предоплаты (детали 111*6 – 1 – 1):
30 числа каждого месяца (кроме февраля) будет сниматься абонплата — 3,19 грн,
и до конца суток предоставлен безлимит бесплатных минут в сети МТС;
при списании абонплаты, если суммы на основном счете недостаточно, баланс номера становится отрицательным или нулевым. При этом будут заблокированы все исходящие события (звонки, смс, пакеты минут) до восстановления положительного баланса основного счета;
отключение услуги — СМС на номер 2046 (бесплатно в сети МТС);
(услуга отключается на протяжении 24 часов с уведомлением по СМС. Уточняйте у операторов факт отключения от услуги).
• Услуга «Конференц-связь» — вводится абонплата 1,06 грн/мес (детали 111*6 – 1 – 2 – 2):
изменения касаются тарифов МТС Предоплата (кроме тарифов линейки «Супер МТС 3D Ноль», СМТС Команда, Без обязательств);
(услуга изначально подключена во всех тарифах МТС Предоплата с момента активации номера);
абонплата за базовую услугу конференц-связи (объединение двух и более вызовов в один разговор) составляет 1,06 грн/месяц;
списание происходит с 26 по 30 число календарного месяца;
для отключения/(повторного подключения) услуги необходимо отправить СМС на номер 2052 (бесплатно в сети МТС, отключение произойдет в течение 24 часов),
либо использовать для управления услугой систему «Интернет-Помощник»
(отключение услуги «Конференц-связь» не влияет на корректную работу базовой услуги Удержание/«Ожидание вызова»).
• Услуга «Моя Семья» («SIM-SIM Семья») — вводится абонплата 2,13 грн/мес (детали 111*6 – 1 – 2 – 1):
изменения не затрагивают тарифы линейки Супер МТС Команда, Два Ноля;
абонплата за каждый установленный любимый номер по услуге составляет 2,13 грн/месяц;
списание происходит в последний день месяца;
для удаления установленных номеров можно использовать номер 7770 (бесплатно в сети МТС).
• Услуга «2500 минут в сети МТС» — переносится дата снятия ежемесячного платежа услуги с 1 числа на 30 число каждого месяца.
(К примеру, плата за услугу в июле будет снята 30 июня.)
С 1 июля 2013
• Услуга «100 минут абонентам по Украине» (в тарифах Energy) — уменьшается объем до 50 мин/мес, а также повышается стоимость — 15,94 грн/месяц.
Итого — пока 5 «улучшений»!
Романс-молитва Научите меня понимать красоту из к/ф «Мусорщик»
Автор сценария Юрий Коротков по повести Ивана Охлобыстина «Мусорщик» — http://ru.wikipedia.org/wiki/Мусорщик_(фильм)
RSS & RSS to Email