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

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

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

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


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


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

Рассмотрим примеры rewrite в nginx

Синтаксис: rewrite <regex> <result> [options]

regex — regexp шаблон для исходной строки запроса
См. документацию по регулярным выражениям

result — обработанные двнные на выход
Итоговая часть, которой далее будет оперировать nginx

options — опции, необязательные, флаг может быть одним из:

redirect
возвращает временное перенаправление с кодом 302
посмотреть в Location ответа как nginx перезаписал запрос

permanent
возвращает постоянное перенаправление с кодом 301
посмотреть в Location ответа как nginx перезаписал запрос

last
завершает обработку текущего набора директив
после чего ищется новый location, соответствующий изменённому URI

break
завершает обработку текущего набора директив rewrite

a.test.conf:
server {
    listen 80;
    server_name a.test;
    
    location /error1 { return 200 "No files in error1!\n"; }

    location /stat {
        root /var/www;
        try_files $uri $uri/;
    }
    
    location /s1 { rewrite ^/s1/(.*)$ /stat/$1; }
    
    location /s2 { rewrite ^/s2/(.*)$ /stat/$1 redirect; }
    
    location /s3 { rewrite ^/s3/(.*)$ /stat/$1 permanent; }
    
    location /s4 {
        rewrite ^/s4/(.*)$ /stat/$1;
        rewrite ^ /error1;
    }
    
    location /s5 {
        rewrite ^/s5/(.*)$ /stat/$1 last;
        rewrite ^ /error1;
    }
    
    location /s6 {
        rewrite ^/s6/(.*)$ /stat/$1 break;
        root /var/www;
    }
}

Пробуем

curl -D - http://a.test/stat/test.htm
Hello from /var/www/stat!

curl -D - http://a.test/s1/test.htm
/s1 - переписывает /s1 на /stat, все остальное остается
Далее идет поиск совпадений по location`s

curl -D - http://a.test/s2/test.htm
/s2 - переписывает /s2 на /stat, все остальное остается, код 302
Далее идет поиск совпадений по location`s

curl -D - http://a.test/s3/test.htm
/s3 - переписывает /s3 на /stat, все остальное остается, код 301
Далее идет поиск совпадений по location`s

curl -D - http://a.test/s4/test.htm
/s4 - переписывает /s4 на /stat, все остальное остается
Далее весь полученный запрос перепичавыется на /error
Далее идет поиск совпадений по location`s

curl -D - http://a.test/s5/test.htm
/s5 - переписывает /s5 на /stat, все остальное остается
Далее rewrite ^ /error1; не станет выполнится
Далее идет поиск совпадений по location`s

curl -D - http://a.test/s6/test.htm
/s6 - переписывает /s6 на /stat, все остальное остается
Далее продолжается работа в данном location

 


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

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

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

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

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





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