<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://megapuper.ru/index.php?action=history&amp;feed=atom&amp;title=Nginx._Location</id>
	<title>Nginx. Location - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://megapuper.ru/index.php?action=history&amp;feed=atom&amp;title=Nginx._Location"/>
	<link rel="alternate" type="text/html" href="http://megapuper.ru/index.php?title=Nginx._Location&amp;action=history"/>
	<updated>2026-04-30T16:22:30Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>http://megapuper.ru/index.php?title=Nginx._Location&amp;diff=159776&amp;oldid=prev</id>
		<title>Root: Новая страница: «Директива location служит для установки конфигурации в зависимости от URI-запроса. Синтаксис…»</title>
		<link rel="alternate" type="text/html" href="http://megapuper.ru/index.php?title=Nginx._Location&amp;diff=159776&amp;oldid=prev"/>
		<updated>2023-05-02T17:38:31Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Директива location служит для установки конфигурации в зависимости от URI-запроса. Синтаксис…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Директива location служит для установки конфигурации в зависимости от URI-запроса. Синтаксис location в общем виде следующий:&lt;br /&gt;
 &amp;lt;font color=green&amp;gt;Syntax&amp;lt;/font&amp;gt;:   location [=|~|~*|^~] uri { ... }&lt;br /&gt;
           location @name { ... }&lt;br /&gt;
 &amp;lt;font color=green&amp;gt;Context&amp;lt;/font&amp;gt;:  server, location&lt;br /&gt;
Location определяется в контексте server (или в location в случае вложенной директивы). В одном настраиваемом виртуальном хосте могут использоваться разные конфигурации в зависимости от обрабатываемого сервером URI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Префикс «@» («собака») определяет именованные расположения. Такие location’ы не используются для обработки обычных запросов. Вместо этого они используются для перенаправления запросов (пример №6). Они не могут быть вложенными и содержать в себе вложенные.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Порядок обработки:&lt;br /&gt;
&lt;br /&gt;
1. = Строковые совпадения. Если найдено, проверка заканчивается. = значит полное совпадение шаблона и проверяемой строки, например = / - заход в секцию будет исключительно для корня, и даже файлы в корне уже сюда не подходят.&amp;lt;br&amp;gt;&lt;br /&gt;
2. ^~ Приоритетное строковое значение. Хотя правильнее было бы назвать «приоритетным регулярным выражением», поскольку в отличии от = требуется совпадение только начала. ^~ / полностью отключит регулярные выражения для секции server, если нет более точного location без ^~&amp;lt;br&amp;gt;&lt;br /&gt;
3. Строковые значения (/download/). Ищется максимальное совпадение, смотрится только с начала пути. Если нужно совпадение вида /*/download/, то это уже будет п.4, так что в уме можно читать такую запись как /download/* Но на этом проверка не заканчивается!&amp;lt;br&amp;gt;&lt;br /&gt;
4. ~, ~* Регулярные выражения, в порядке определения в конфиге. При совпадении - выполняется этот регэксп, проверка заканчивается. ~ - с учётом регистра, ~* - без.&amp;lt;br&amp;gt;&lt;br /&gt;
5. Если не было найдено подходящей регулярки, используется наибольшее совпадение из п.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Примеры использования location'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Пример конфигурации №1. Для корневого URI «/»&amp;lt;/font&amp;gt;&lt;br /&gt;
 location = / {&lt;br /&gt;
    &amp;lt;font color=grey&amp;gt;''# Расположение только для URI /''&lt;br /&gt;
    ''# При совпадении дальнейший поиск не осуществляется''&amp;lt;/font&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Пример конфигурации №2. Базовый location&amp;lt;/font&amp;gt;&lt;br /&gt;
 location / {&lt;br /&gt;
    &amp;lt;font color=grey&amp;gt;''# Совпадает с URI всех запросов, т.к. они все начинаются с &amp;quot;/&amp;quot;&lt;br /&gt;
    ''# Но! Если будут найдены соответствия в расположениях''&lt;br /&gt;
    ''# с регулярными выражениями или с другим более длинным''&lt;br /&gt;
    ''# строковым литералом (например, &amp;quot;/data/&amp;quot;),''&lt;br /&gt;
    ''# то конфигурация для &amp;quot;/&amp;quot; не будет применена.''&amp;lt;/font&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Пример конфигурации №3. Для URI вида «/data/.*»&amp;lt;/font&amp;gt;&lt;br /&gt;
 location /data/ {&lt;br /&gt;
    &amp;lt;font color=grey&amp;gt;''# Это расположение соответствует всем URI, начинающихся с &amp;quot;/data/&amp;quot;''&lt;br /&gt;
    ''# и продолжает поиск по оставшимся location'ам.''&lt;br /&gt;
    ''# В этом примере регулярные выражения и другие строковые литералы''&lt;br /&gt;
    ''# также будут проверены, и &amp;quot;location /data/&amp;quot; будет использован,''&lt;br /&gt;
    ''# если более конкретизирующие расположения не удовлетворят искомому ресурсу.''&amp;lt;/font&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Пример конфигурации №4. Для URI вида «/img/.*»&amp;lt;/font&amp;gt;&lt;br /&gt;
 location ^~ /img/ {&lt;br /&gt;
    &amp;lt;font color=grey&amp;gt;''# Соответствует любому URI, начинающемуся с &amp;quot;/img/&amp;quot;.''&lt;br /&gt;
    ''# Если соответствие установлено - останавливает дальнейший поиск,''&lt;br /&gt;
    ''# не проверяя регулярные выражения, т.к. используется''&lt;br /&gt;
    ''# префикс ^~ &amp;quot;крышечка/циркумфлекс тильда&amp;quot;.''&amp;lt;/font&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Пример конфигурации №5. Для графических форматов&amp;lt;/font&amp;gt;&lt;br /&gt;
 location ~* \.(png|ico|gif|jpg|jpeg)$ {&lt;br /&gt;
    &amp;lt;font color=grey&amp;gt;''# Данное расположение соответствует всем запрашиваемым URI,&lt;br /&gt;
    ''# оканчивающихся &amp;quot;.png&amp;quot;, &amp;quot;.ico&amp;quot;, &amp;quot;.gif&amp;quot;, &amp;quot;.jpg&amp;quot; или &amp;quot;.jpeg&amp;quot;.''&lt;br /&gt;
    ''# При этом надо заметить, что запросы внутри расположения &amp;quot;/img/&amp;quot;''&lt;br /&gt;
    ''# будут обработаны в location из примера №4''&lt;br /&gt;
    ''# Т.е., если расположения из примеров №4 и №5 разместить в таком же''&lt;br /&gt;
    ''# порядке в реальном конфиге, то до этого расположения ресурсов''&lt;br /&gt;
    ''# дойдут только те картинки, которые лежат вне расположения &amp;quot;/img/&amp;quot;''&amp;lt;/font&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Пример конфигурации №6. Именованный location&amp;lt;/font&amp;gt;&lt;br /&gt;
 location / {&lt;br /&gt;
    error_page 404 = @fallback;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 location @fallback {&lt;br /&gt;
    &amp;lt;font color=grey&amp;gt;''# Если при внутреннем перенаправлении не нужно менять URI,''&lt;br /&gt;
    ''# то можно передать обработку ошибки в именованный location''&amp;lt;/font&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Пример конфигурации №7. Выделение переменной&amp;lt;/font&amp;gt;&lt;br /&gt;
 location ~ ^/a/(?[a-zA-Z]+) {&lt;br /&gt;
   &amp;lt;font color=grey&amp;gt;''# Тут можно использовать переменную $myvar,''&lt;br /&gt;
   ''# которая представляет из себя строку из латиницы''&amp;lt;/font&amp;gt;&lt;br /&gt;
   if ($myvar = &amp;quot;sth&amp;quot;) { ... }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Примеры реальных nginx location’ов'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Anti-hotlinking&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Директива location для Anti-hotlinking (борьбы с использованием ресурсов сервера на сторонних ресурсах. Такой способ использования сетевых ресурсов называется hotlinking). Такое поведение хитрых разработчиков может заметно увеличить нагрузку на сервер.&lt;br /&gt;
 location ~ \.(gif|png|jpe?g)$ {&lt;br /&gt;
    valid_referers none blocked mywebsite.com *.mywebsite.com;&lt;br /&gt;
    if ($invalid_referer) {&lt;br /&gt;
       return 403;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Запрет на скрипты внутри директорий&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Следующие примеры - запрет на скрипты в разрешённых для записи директориях:&lt;br /&gt;
 location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {&lt;br /&gt;
    error_page 403 /403.htm;&lt;br /&gt;
    return 403;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 location ~* ^/(images)/.+\.(php|php3|php4|php5|phtml|phps|pl|pm)$ {&lt;br /&gt;
          deny all; &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Включение autoindex&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
В следующем примере location используется для включения autoindex в nginx (разрешение на вывод листинга каталога):&lt;br /&gt;
 location /list_dir {&lt;br /&gt;
     autoindex on;&lt;br /&gt;
     autoindex_exact_size off;&lt;br /&gt;
     autoindex_localtime on;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Проксирование Nginx на другой IP&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 server {&lt;br /&gt;
     listen   80;&lt;br /&gt;
     server_name домен;&lt;br /&gt;
     access_log off;&lt;br /&gt;
     error_log off;&lt;br /&gt;
     location / {&lt;br /&gt;
         # remote HTTP server&lt;br /&gt;
         proxy_pass http://IP:Порт;&lt;br /&gt;
         proxy_redirect http://IP:Порт /;&lt;br /&gt;
         proxy_set_header Host $host;&lt;br /&gt;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
         proxy_set_header X-Forwarded-Proto $scheme;&lt;br /&gt;
         proxy_set_header X-Real-IP $remote_addr;&lt;br /&gt;
         proxy_connect_timeout 600;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Root</name></author>
		
	</entry>
</feed>