Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Серия по nginx статья 2


Серия по nginx статья 2
 
Nginx внутри виртуального хоста определяет логику обработки запроса
 
Пример URI: http://a.test/path/test.php?arg1=a&arg2=b
http - протокол
a.test - адрес хоста
path/test.php - запрос
arg1=a&arg2=b - аргументы запроса
 
Логика разбора запроса определяется location, которые могут иметь или не иметь модификаторов
Если у нескольких location отсутствуют модификаторы, nginx ищет лучшее совпадение
 
Модификатор "=" - точного соответствия, используется для точного совпадения с запросом
При совпадении запроса с location с модификатором "=" дальнейший поиск останавливается
Nginx сразу начинает обрабатывать запрос, не пытаясь сопоставить его с другими location
 
Regexp (регулярные выражения) модификаторы, имеют приоритет перед location без модификаторов
Модификатор "~" - регистрозависимое регулярное выражение
Модификатор "~*" - регистроНЕзависимое регулярное выражение
 
Модификатор "^~" - не проверять regexp location в случае совпадения
 
Далее пример, где в комментариях # оставлены примеры совпадущих запросов
\. и $ - спецсиволы, см. документацию по регулярным выражениям
Их задача в данной статье выделить расширение php или указать окончание - "$"
 
a.test.conf:
server {
    listen 80;
    server_name a.test;
    
    location = / { return 200 "location 1\n"; }
    # curl -D - http://a.test
 
    location = /path/test.html { return 200 "location 2\n"; }
    # curl -D - http://a.test/path/test.html
 
    location /path { return 200 "location 3\n"; }
    # curl -D - http://a.test/path
    # curl -D - http://a.test/path/tes.html
 
    location /path/test { return 200 "location 4\n"; }
    # curl -D - http://a.test/path/test
    # curl -D - http://a.test/path/tester.html
 
    location ~ \.pHp { return 200 "location 5\n"; }
    # curl -D - http://a.test/path/doc.pHp
    # curl -D - http://a.test/path/doc.pHp?arg1=a&arg2=b
 
    location ~* \.pHp$ { return 200 "location 6\n"; }
    # curl -D - http://a.test/path/doc.php
    # curl -D - http://a.test/path/test.php?arg1=a&arg2=b
 
    location ^~ /path/test.pHp { return 200 "location 7\n"; }
    # curl -D - http://a.test/path/test.pHp
    # curl -D - http://a.test/path/test.pHp?arg1=a&arg2=b
}
 

Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект