LINUX.ORG.RU
ФорумAdmin

lighttpd+fastcgi+php_cgi VS nginx+apache+mod_php


0

0

Имеется древний корявый сайт на пхп 4. Там вот такая красота в .htaccess:

       
RewriteEngine On                                                                                                                                                                
RewriteRule ^admin/$ /admin/index.htm [NC,L]                                                                                                                                              
                                                                                                                                                                                          
RewriteCond %{REQUEST_URI} ^/index\.php$                                                                                                                                                  
RewriteRule ^.+$ http://www.bedtime.ru/ [R=301,L]                                                                                                                                         
                                                                                                                                                                                          
RewriteCond %{HTTP_HOST} ^bedtime\.ru$ [NC]                                                                                                                                               
RewriteCond %{REQUEST_URI} !^/robots\.txt$                                                                                                                                                
RewriteRule ^(.*)$ http://www.bedtime.ru/$1 [R=301,L]                                                                                                                                     
                                                                                                                                                                                          
Options FollowSymLinks                                                                                                                                                                    
                                                                                                                                                                                          
RewriteCond %{HTTP_REFERER} !^$                                                                                                                                                           
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?bedtime.ru [NC]                                                                                                                          
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?bigmag.ru [NC]                                                                                                                           
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?bedmag.ru [NC]                                                                                                                           
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?bigmag.ru/1/ [NC]                                                                                                                        
                                                                                                                                                                                          
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]                                                                                                                                              
                                                                                                                                                                                          
RewriteCond %{REQUEST_FILENAME} !-f                                                                                                                                                       
                                                                                                                                                                                          
RewriteRule ^cat([0-9]*)?/?$ ./new_index.php?cat=$1 [QSA]                                                                                                                                 
RewriteRule ^item([0-9]*)?/?$ ./new_index.php?item=$1 [QSA]                                                                                                                               
                                                                                                                                                                                          
RewriteRule ^item([0-9]*)?/?cat([0-9]*)?/?$ ./new_index.php?item=$1&cat=$2 [QSA]                                                                                                          
RewriteRule ^cat([0-9]*)?/?item([0-9]*)?/?$ ./new_index.php?cat=$1&item=$2 [QSA]                                                                                                          
                                                                                                                                                                                          
RewriteRule ^([0-9,a-z,A-Z,+,_,-]*)_([0-9]*).html$ ./print.php?id=$2 [QSA]                                                                                                                
                                                                                                                                                                                          
RewriteRule ^taleid([0-9]*)?/?$ ./index.php?taleid=$1 [QSA]                                                                                                                               
                                                                                                                                                                                          
RewriteRule ^mapitem?/?$ ./mapitem.php [QSA]                                                                                                                                              

RewriteRule ^itemfull?/?$ ./new_index.php?mapitem [QSA]

RewriteRule ^cattt?/?$ ./new_index.php?cattt [QSA]

########## Начало - Правила обработки запросов для блокировки распространенных эксплоитов
## If you experience problems on your site block out the operations listed below
#
# Block out any script trying to set a mosConfig value through the URL
#RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## Конец - Правила обработки (Rewrite rules) для блокировки распространенных эксплоитов

RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]

То бишь SEF и костыли против эксплоитов. Возможно ли это переписать при помощи lighttpd'шного url.rewrite-once, или таки придётся продолжать использовать апач? В таком случае, разумеется, прикручу nginx для обработки статики, память-то жалко.

Где можно почитать про сравнения, допустим, прожорливости чистого Apache, nginx/Apache и lighttpd?

★★★★★

могу отвечать только за лайти. Переписать можно все только будут проблемы с этими строчками . Хотя был какой то модуль который это реализовывал. RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}] RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]

pinachet ★★★★★
()
Ответ на: комментарий от desruptor

сайт один

Вернее, сайтов 60, но каждый в виртуалке

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от desruptor

>АФААР, mod_php менее прожорлив

mod_php и php-fastcgi имеют в целом (с точностью до погрешностей измерения) равную производительность, но традиционно считается, что fastcgi на единицы процентов быстрее.

>но менее секурен при большом количестве сайтов.

Он, как бы, вообще несекьюрен, ибо в рамках производительных apache-mpm он работает от одного только юзера для всех сайтов. А mpm-itk работает в 10(!) раз медленнее традиционных worker или perfork.

KRoN73 ★★★★★
()
Ответ на: комментарий от drull

Да на одном уровне с лайти примерно. Мне лайти в некоторых аспектах больше нравится.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Он, как бы, вообще несекьюрен, ибо в рамках производительных apache-mpm он работает от одного только юзера для всех сайтов.

У меня на каждый компьютер (виртуалку) — один сайт, так что пофиг.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от drull

>а чем не устраивает nginx+php fastcgi?

Геморроя больше. У Лайти php-fastcgi идёт из коробки и fastcgi-процессы запускаются не отдельным сервером (хотя кому нужно - можно и так), а прямо из Лайти. Плюс Лайти следит за работоспособностью fastcgi и поэтому под ним не увидишь небезызвестную ошибку про отвал бэкенда :) А вот под nginx под это дело отдельный watchdog писать приходится.

...

В общем, Лайти - он ближе к человеку :)

(у себя юзаю все три варианта)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

А вот под nginx под это дело отдельный watchdog писать приходится.

не приходится. в комплекте поставки лайти( :-) ) есть spawn-fcgi, который следит за тем чтоб пхп работал. зато nginx+php-fastcgi+spawn-fcgi работает быстрее (проверял).

drull ★☆☆☆
()
Ответ на: комментарий от drull

>в комплекте поставки лайти( :-) ) есть spawn-fcgi

Им и пользуюсь :) В смысле с nginx.

>который следит за тем чтоб пхп работал

Где такое? Если spawn-fcgi от Лайти падает, то сам не подымается. Собственно, у меня watchdog и занимается проверкой периодической. Если упало - сервис передёргивается.

>зато nginx+php-fastcgi+spawn-fcgi работает быстрее (проверял).

У меня - одинаково :)

KRoN73 ★★★★★
()
Ответ на: комментарий от drull

>я имел ввиду что если падает демонизированый пхп, то спавнцги его поднимает

Я имел в виду, что регулярно падает сам spawn-fcgi :)

KRoN73 ★★★★★
()
Ответ на: комментарий от drull

У меня nginx тоже висит не на высокой нагрузке (основное - на Лайти), но раз в неделю-другую перезапускать spawn переходилось, пока процесс не автоматизировал :)

KRoN73 ★★★★★
()

В общем, пока решил так — лайти под всё, где нет сложных .htaccess. Под остальное (включая сайт из топика) — nginx+apache. Если что-то будет очень много кушать, буду пытаться переписать правила. Такие дела.

Obey-Kun ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.