Установка Apache + nginx с использованием csf

12 3
V
На сайте с 14.04.2007
Offline
316
5713

Установка nginx:

wget http://www.sysoev.ru/nginx/nginx-0.5.32.tar.gz
tar -zxf nginx-0.5.32.tar.gz
cd nginx-0.5.32

wget http://internap.dl.sourceforge.net/sourceforge/pcre/pcre-6.1.tar.gz
tar -zxf pcre-6.1.tar.gz
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-pcre=pcre-6.1 --with-http_addition_module --with-http_stub_status_module

make
make install

Затем создаём файл запуска nginx:

vi /etc/init.d/nginx


#!/bin/sh
# nginx - this script starts and stops the nginx daemin
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/nginx.conf
# pidfile: /var/run/nginx.pid

. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/nginx"
prog=$(basename $nginx)

[ -e /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx

start() {
echo -n $"Starting $prog: "
daemon $nginx -c /usr/local/nginx/nginx.conf
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
stop
start
}

reload() {
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

fdr_status() {
status $prog
}

case "$1" in
start|stop|restart|reload)
$1
;;
force-reload)
force_reload
;;
status)
fdr_status
;;
condrestart|try-restart)
[ ! -f $lockfile ] || restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"
exit 2
esac

и файл конфигурации:

vi /usr/local/nginx/nginx.conf

user nobody nobody;
worker_processes 6;
worker_rlimit_nofile 16384;
events {worker_connections 8192;}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_header_timeout 10;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 4k;
large_client_header_buffers 2 128k;
gzip on;
gzip_min_length 1024;
gzip_buffers 12 32k;
gzip_types text/html application/x-javascript application/xml text/css;
output_buffers 4 32k;
postpone_output 1460;
keepalive_timeout 75;
limit_zone one $binary_remote_addr 10m;
limit_rate 25k;
limit_conn one 5;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_buffers 16 512k;
proxy_buffer_size 512k;
#proxy_busy_buffers_size 64k;
server {listen 8008; location /nstat.htm {stub_status on;}}
include "/usr/local/nginx/conf.conf";
}

В файле conf.conf описываем IP, на которые резолвится

vi /usr/local/nginx/conf.conf

server {listen 1.2.3.4:88; location / {proxy_pass http://1.2.3.4:80;}}
server {listen 1.2.3.5:88; location / {proxy_pass http://1.2.3.5:80;}}

Устанавливаем mod_realip для Apache 1.3.*

cd /usr/local/src
wget http://sysoev.ru/mod_realip/mod_realip-2.0.tar.gz
tar zxf mod_realip-2.0.tar.gz && cd mod_realip-2.0
apxs -iac mod_realip.c
strip /usr/local/apache/libexec/mod_realip.so
/etc/init.d/httpd restart

В httpd.conf добовляем запись:

vi /etc/httpd/conf/httpd.conf

<IfModule mod_realip.c>
RealIP on
</IfModule>

Для Apache2:

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.5.tar.gz
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

В httpd.conf добовляем запись:

vi /etc/httpd/conf/httpd.conf

RPAFenable On
RPAFsethostname On
RPAFproxy_ips _nginx_IP_ _apache_IP_

Если на сервере не установлен csf+lfd, то его следует установить:

yum install -y perl-libwww-perl
wget http://configserver.com/free/csf.tgz
tar zxf csf.tgz
cd csf
./install.sh

Затем в csf описываем всё теже IP:

vi /etc/csf/csfpre.sh

#!/bin/sh

iptables -F -t nat
iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 80 -j DNAT --to-destination 1.2.3.4:88
iptables -t nat -A PREROUTING -d 1.2.3.4.5 -p tcp -m tcp --dport 80 -j DNAT --to-destination 1.2.3.5:88

Для особо ленивых написан скрипт генерации IP записей для conf.conf и csfpre.sh: http://moyhosting.com/ip/index.html :)

Устанавлиаем права на csfpre.sh

chmod 0700 /etc/csf/csfpre.sh

Далее подключаем nat:

echo "1" > /proc/sys/net/ipv4/ip_forward

Выполняем следующие команды:

service nginx restart
service csf restart

И всё работает :cool:

Материалы:

Установка nginx и модулей apache: MIRhosting.com, http://help.mirhosting.com/

Файл конфигурации nginx любезно предоставил Борис Долгов.

Скрипт генерации ip записей написал Александр Федяшов aka valuex.

Устанвока CSF+LFD взята с ресурса csf-lfd.ru

N
На сайте с 06.05.2007
Offline
419
#1

А я тоже заметил, что на этом форуме поисковики прямо пасуться. Стоит cсылку дать как сразу поперло.

Кнопка вызова админа ()
A4
На сайте с 09.08.2007
Offline
55
#2

А за установку из исходников я бы по голове бил.

Впрочем,у линуксятников частенько всё не как у людей..

Настройка nginx и сопутствующего софта на freebsd/debian. Контакт через PM.
O
На сайте с 13.08.2008
Offline
26
#3
Alexei42:
А за установку из исходников я бы по голове бил.
Впрочем,у линуксятников частенько всё не как у людей..

Это у вас пройдет :-)

Outsourcenow.ru: оттюним ваш веб-сервер. 100 млн. запросов в сутки - наш размерчик!
M
На сайте с 19.09.2007
Offline
112
#4

а что мешает повесить апача на 127.0.0.1:80 , а nginx на реалИП:80 и не делать никаких неоправданных телодвижений с натами ?

N
На сайте с 06.05.2007
Offline
419
#5

manman, многие "панели угробления хостингом" только на 80 порту могут работать.

Andreyka
На сайте с 19.02.2005
Offline
822
#6

А некоторые требуют там апача и если его нет - каждую минуту орут в почту

Не стоит плодить сущности без необходимости
A
На сайте с 12.04.2007
Offline
153
#7

мужики, а зачем нгинкс сувать где только можно, иногда он не нужен...он класный как прокси, как редирект/балансировка, как легенький сервер для стат контента...кром пробовал просто обрабатывать некоторые папки только, а не всю корневую директорию т.е. например папка images/ static/ обрабатываются нгинксом, а все остальное штатным... с портом все-равно прийдет придумывать..но это дело техники

Сертифицированный дата центр в Германии ( https://www.keyweb.net )
O
На сайте с 13.08.2008
Offline
26
#8
abudda:
мужики, а зачем нгинкс сувать где только можно, иногда он не нужен...

- fastcgi работает в разы интереснее, чем mod_php.

- rewrite в nginx на два порядка мощнее, чем в апаче.

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#9
abudda:
мужики, а зачем нгинкс сувать где только можно, иногда он не нужен...он класный как прокси, как редирект/балансировка, как легенький сервер для стат контента...кром пробовал просто обрабатывать некоторые папки только, а не всю корневую директорию т.е. например папка images/ static/ обрабатываются нгинксом, а все остальное штатным... с портом все-равно прийдет придумывать..но это дело техники

Элементарно - лимитировать скорость отдачи, лимитировать кол-во коннектов с одного ip, делать keepalive-коннекты, не жрущие по 10мб памяти каждый, не заставлять апачь висеть в памяти до конца отдачи файла|страницы "медленному клиенту". Достоинств можно найти массу пере стандартным апачем.

По поводу nat'a - да, тут написали совершенно верно - у некоторых панелей (не будем показывать пальцем на плеск) сделать через их "события" что-то, похожее на шаблон вхоста будет намного сложнее, чем занатить несколько ip. Тормоза от nat'a на линуксе проявляются примерно при 200-300 мегабитной отдаче (по кр. мере, сервер в локалке DNAT'ит и SNAT'ит около 120 мегабит и все работает прекрасно). У сипанели можно сделать темплейтами, но опять же, после всеми любимых апдейтов могут начаться проблемы - несовместимый формат шаблона или внезапно вернувшийся старый шаблон. У DirectAdmina система нормальная, только по каким-то причинам он иногда начинает вижжать об упавшем апаче. У ISPmanager'a поддержка nginx встроенная, но все равно падает при добавлении каждого домена, а watchdog не следит.

Alexei42, в мире линуксов правят не порты, а прекомпилированные rpm'ы, deb'ы и прочее. И с ними очень тяжело возиться, если хочется добавить один аргумент в configure или наложить патч.

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
S
На сайте с 01.04.2008
Offline
91
#10

Интересная штука, а что станет с серваком после очередного "апдейта" в cPanel/WHM и пересборки apache в Easy Apache 3?

Править домен летит Айболит. И одно только слово твердит: - DNS! DNS! DNS!
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий