Логос NginxNginx сервер паутины высокой эффективности и сервер полномочия почты написанный Igor Sysoev и хорошей заменой для HTTPD Апэйч, лидером рынка. Nginx быстро увеличивает свой удельный вес на рынке при главные вебсайты соединяя его любит wordpress.com. В обзоре июня 2008 Netcraft LiteSpeed потеряло больше чем 600 тысяч места во время этого обзора, пока nginx приобрело больше чем миллион мест; больше чем удваивающ в номерах. Система WordPress blogging недавно преобразовала весь из своих балансеров нагрузки к nginx, используя модуль в верхней части потока хэша для того чтобы служить 8-9 тысяч запросы в секунду. Мы слишком решали двинуть некоторые из наших вебсайтов к Nginx. Здесь немногие необходимые подсказки и генеральные линии для устанавливать Nginx. Это нет замены для читать документацию (rtfm). Однако когда вы вставлены даже после чтения и перечитывать документацию nginx тогда прочитаны ниже. Вы поймете значение подсказок ниже только после этого :)

Мы сфокусируем на общих подсказках конфигурации так же, как для фактически хозяйничать.

Примечание: В фактически хозяйничающ вы используйте такой же адрес IP для множественных вебсайтов. Каждый вебсайт будет большинств правоподобное для того чтобы иметь отдельно архивы .htaccess (принимая вас первоначально хозяйничал на сервере паутины HTTPD Апэйч), отдельно директорию корня etc. например в одном вебсайте вы имеете wordpress, пока на другом вы можете иметь MODx и кто знает возможно phpBB на трети. Всем этим различным директивам .htaccess нужно пойти в архивы конфигурации nginx.

Nginx имеет главное ограничение в правилах переработанного вариант в что вы не можете навести множественные условия для правила переработанного вариант. Ontheonehand HTTPD Апэйч обеспечивает хорошее разрешение используя множественные директивы RewriteCond.

Ontheonehand Nginx позволяет если заявление. Вы можете иметь правила переработанного вариант внутри если блоки. Однако если блок сами лимитирован. Вы не имеете и или или не добавить множественные условия к одиночной если блок. Также вы не можете гнездиться если блоки. Никакое другое заявление также. Однако вы можете использовать выражения регулярного поэтому следующее возможно:

если ($request_method! ^ ~ (ПОЛУЧИТЕ|ГОЛОВКА) $) {
    возвращение 501;
}

Однако вы не можете проверить 2 перемеююого одновременно. Специально в фактически хозяйничая сценарии такие ограничения можно часто воспринимать как showstoppers. Однако я нашел что с маленьким экстра думать вы может прийти вверх с новаторскими разрешениями служить ваши специальные потребности. Например очень общее правило .htaccess для много основанного PHP програмного обеспечения паутины включая wordpress является следующим:

RewriteEngine дальше
RewriteBase/
RewriteCond % {REQUEST_FILENAME}! - f
RewriteCond % {REQUEST_FILENAME}! - d
RewriteRule. /index.php [l]

Он говорит что если спрошенный filename не присутствовал и нет также директории тогда, то призовите index.php вместо.

Однако пока RewriteCond это же для большинств програмного обеспечения основанного PHP RewriteRule нет. Например часть правил переработанного вариант для phpBB является следующим:

RewriteCond % {REQUEST_FILENAME}! - f
RewriteCond % {REQUEST_FILENAME}! - d
RewriteCond % {REQUEST_FILENAME}! - l
^ RewriteRule [a-z0-9_-] +? (p ([0-9] +) \ .html)? $ /viewforum.php? start=$2 [QSA, l, NC]

Проигнорируйте третье RewriteCond для теперь. Оно также проверяет для символических соединений. По мере того как вы можете увидеть правило переработанного вариант друг. Предположите, что вы хозяйничать и WordPress и вебсайты phpBB на одиночном адресе IP (одиночном сервере). По мере того как первые 2 правила общие вы можете сделать пишете следующее правило которое приложит к обоим сервера:

# если архив, директория или символическое соединение
если (- e $request_filename) {, то
    пролом;
}

Это делает такую же вещь какая предыдущее RewriteCond делает и применимо к всем вебсайтам на сервере (принимать вас установил его внутри сервер).

Теперь вы можете иметь отдельно правила переработанного вариант для вашего индивидуального сервера. Например вы можете использовать это правило для вашего блога WordPress:

# правила переработанного вариант для blog.example.com
если (^blog ~* $host \ .example \ .com$) {, то
    ^ переработанного вариант (. *) $ /index.php? q=$1 продолжают;
    пролом;
}

Пролом обеспечить что никакие более добавочные правила не обработаны после всех предыдущих заявлений в если условие было исполнено.

Последнее обеспечивает что никакие более добавочные правила переработанного вариант не исполнены когда правило переработанного вариант сопрягает.

Я писал 3 статьи недавно с акцентом на фактически хозяйничать:

  1. Как побежать phpBB на с Nginx/без фактически хозяйничать
  2. Nginx: как зафиксировать вопрос разрешения директории также, как внутренняя перенаправляет в фактически хозяйничать
  3. Как установить Nginx для фактически хозяйничать

Препятствуйте нам добавить немногие больше подсказок для того чтобы завершить главу, мы?

Как предотвратить архивы начиная с. (как .htaccess) от быть осмотренным в Nginx?

Добавьте это внутри ваш блок сервера около верхней части:

/~ положения \. {
    откажите все;
}

Это излучит все внешние запросы для архивов при имена начиная с. (многоточие).

Как перенаправить url www к вариантам non-www?

Например здесь как вы можете перенаправить все запросы как http://www.example.com/yourpage к http://example.com/yourpage:

если (^www ~* $host \. (. *)) {
    установите $host_without_www $1;
    перезапишите ^ (. *) перманентность $ http://$host_without_www$1; # $1 содержат «/yourpage», не 'www.example.net/yourpage'
}

Примечание: Этот пример от их вебсайта

Как преобразовать правила переработанного вариант HTTPD Апэйч к Nginx перезапишите правила?

Я обсуждал некоторые оттенки над и в статьями. Одиночная самая большая подсказка я могу дать то в HTTPD Апэйч выражение регулярного в RewriteRule сопрягано с запросом URI без a/в начале, пока в Nginx оно сопрягает с uri запроса с в начале слеша. Настолько например правило переработанного вариант HTTPD Апэйч как это:

RewriteRule ^ [a-z0-9_-] *-f ([0-9] +)/? (p ([0-9] +) \ .html)? $ /viewforum.php? f=$1&start=$3 [QSA, l, NC]

становит это в nginx:

перезапишите ^/[a-z0-9_-] *-f ([0-9] +)/? (p ([0-9] +) \ .html)? $ /viewforum.php? f=$1&start=$3 продолжают;

Просто, не так ли?

Примечание: RewriteCond нужно быть снабженным используя если директивы как объяснено выше.

Как остановить внести изображение/статические архивы в журнал?
Как определить срок годности для изображения/статических архивов?

# архивы подачи статические сразу
~* ^.+ положения. (jpg|JPEG|gif|css|PNG|js|ico|HTML) $ {
    access_log        с;
    теряет силу           30d;
}

Чувствуйте свободным обсудить о этой статье в нашем форуме.

PS. В случае если вы интересуете рубить нет о ломать програмное обеспечение или использовании его для злостых целей (трескать). Рубить о знать вопрос в плотных деталях. Несчастливо журналисты печатать-средств часто смущают между рубить и трескать и давали рубить плохое имя.

PPS. Что бедный человек I исследовал но разница в представления между nginx и HTTPD Апэйч. Я уточню на том более поздно.