# HG changeset patch # User Ruslan Ermilov # Date 1324899426 0 # Node ID 44ab4026d9f5f18b9d87df657d44d3f87b484957 # Parent 5d87f76cdfab4695a61f2a7e86d8e872963e4918 Fixed markup and spelling, sorted directives, added missing links, changed some wording. diff -r 5d87f76cdfab -r 44ab4026d9f5 xml/ru/docs/http/ngx_http_proxy_module.xml --- a/xml/ru/docs/http/ngx_http_proxy_module.xml Fri Dec 23 17:30:31 2011 +0000 +++ b/xml/ru/docs/http/ngx_http_proxy_module.xml Mon Dec 26 11:37:06 2011 +0000 @@ -2,27 +2,28 @@ -
-Модуль ngx_http_proxy_module позволяет передавать запросы другому серверу. +Модуль ngx_http_proxy_module позволяет передавать +запросы другому серверу.
-
+
location / { - proxy_pass http://localhost:8000; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://localhost:8000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; } @@ -30,15 +31,17 @@
-
+
размер -4k/8k -http, server, location +4k|8k +http +server +location -Директива задаёт размер буфера, в который будет читаться +Задаёт размер буфера, в который будет читаться первая часть ответа, получаемого от проксируемого сервера. В этой части ответа находится, как правило, небольшой заголовок ответа. По умолчанию размер буфера равен размеру одного буфера в директиве @@ -51,20 +54,26 @@ on | off on -http, server, location +http +server +location -Директива разрешает использовать буферизацию ответа проксируемого сервера. +Разрешает или запрещает использовать буферизацию ответа проксируемого сервера. + + + Если буферизация включена, то nginx принимает ответ проксируемого сервера -как можно быстрее, сохраняя его в буфера, заданные директивами +как можно быстрее, сохраняя его в буферы, заданные директивами и . -Если ответ не помещается полностью в память, то его часть записывается на диск. +Если ответ не вмещается целиком в память, то его часть записывается на диск. Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же -по мере его поступления. nginx не пытается считать весь ответ проксируемого -сервера, максимальный размер данных, который nginx может принять от сервера +по мере его поступления. +nginx не пытается считать весь ответ проксируемого сервера. +Максимальный размер данных, который nginx может принять от сервера, задаётся директивой . @@ -73,14 +82,16 @@ число размер -8 4k/8k -http, server, location +8 4k|8k +http +server +location -Директива задаёт число и размер буферов для одного соединения, +Задаёт число и размер буферов для одного соединения, в которые будет читаться ответ, получаемый от проксируемого сервера. -По умолчанию размер одного буфера равен размеру страницы, в зависимости -от платформы это или 4K, или 8K. +По умолчанию размер одного буфера равен размеру страницы. +В зависимости от платформы это или 4K, или 8K. @@ -89,13 +100,15 @@ зона | off off -http, server, location +http +server +location -Директива задаёт зону для кэширования. +Задаёт зону для кэширования. Одна и та же зона может использоваться в нескольких местах. -Параметр "off" запрещает кэширование, унаследованное с предыдущего -уровня конфигурации. +Параметр off запрещает кэширование, унаследованное +с предыдущего уровня конфигурации. @@ -104,15 +117,17 @@ строка ... -http, server, location +http +server +location -Директива задаёт условия, при которых ответ не будет браться из кэша. -Если значение хотя бы одной из строк переменных не пустое и не равно "0", +Задаёт условия, при которых ответ не будет браться из кэша. +Если значение хотя бы одного из строковых параметров непустое и не равно “0”, то ответ не берётся из кэша: -proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; -proxy_cache_bypass $http_pragma $http_authorization; +proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; +proxy_cache_bypass $http_pragma $http_authorization; Можно использовать совместно с директивой . @@ -123,22 +138,38 @@ строка $scheme$proxy_host$request_uri -http, server, location +http +server +location -Директива задаёт ключ для кэширования, например, +Задаёт ключ для кэширования, например, -proxy_cache_key "$host$request_uri $cookie_user"; +proxy_cache_key "$host$request_uri $cookie_user"; По умолчанию значение директивы близко к строке -proxy_cache_key $scheme$proxy_host$uri$is_args$args; +proxy_cache_key $scheme$proxy_host$uri$is_args$args; + +число +1 +http +server +location + + +Задаёт число запросов, после которого ответ будет закэширован. + + + + + путь @@ -150,12 +181,14 @@ http -Директива задаёт путь и другие параметры кэша. Данные кэша хранятся в файлах. -Ключом и именем файла в кэше является результат функции md5 от -проксированного URL. Параметр levels задаёт уровни иерархии кэша, +Задаёт путь и другие параметры кэша. +Данные кэша хранятся в файлах. +Ключом и именем файла в кэше является результат функции MD5 +от проксированного URL. +Параметр levels задаёт уровни иерархии кэша, например, при использовании -proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; +proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; имена файлов в кэше будут такого вида: @@ -176,65 +209,17 @@ Кроме того, все активные ключи и информация о данных хранятся в разделяемой -памяти — зоне, имя и размер которой задаётся параметром keys_zone. -Если к данным кэша не обращются в течение времени, заданного параметром -inactive, то данные удаляются, независимо от их свежести. -По умолчанию inactive равен 10 минутам. +памяти — зоне, имя и размер которой задаётся параметром +keys_zone. +Если к данным кэша не обращаются в течение времени, заданного параметром +inactive, то данные удаляются, независимо от их свежести. +По умолчанию inactive равен 10 минутам. -Специальный процесс "cache manager" следит за максимальным размером кэша, -заданным параметром max_size, и при превышении его размеров удаляет -самые невостребованные данные. - - - - - - -число -1 -http, server, location - - -Директива задаёт число запросов, после которого ответ будет -закэширован. - - - - - - -ответ ... время - -http, server, location - - -Директива задаёт время кэширования для разных ответов. -Например, директивы - -proxy_cache_valid 200 302 10m; -proxy_cache_valid 404 1m; - -задают время кэширования 10 минут для ответов 200 и 302, -и 1 минуту для ответов 404. - - - -Если указано только время кэширования, - -proxy_cache_valid 5m; - -то кэшируются только ответы 200, 301 и 302. - - - -Кроме того, может кэшировать любые ответы с помощью параметра "any": - -proxy_cache_valid 200 302 10m; -proxy_cache_valid 301 1h; -proxy_cache_valid any 1m; - +Специальный процесс “cache manager” следит за максимальным размером кэша, +заданным параметром max_size, и при превышении +его размеров удаляет самые невостребованные данные. @@ -254,15 +239,57 @@ off ... off -http, server, location +http +server +location -Директива определяет, в каких случаях можно использовать +Определяет, в каких случаях можно использовать устаревший закэшированный ответ, если при работе с проксированным сервером возникла ошибка. Параметры директивы совпадают с параметрами директивы . -И, кроме того, есть параметр updating, которой разрешает использовать -устаревший закэшированный ответ, если на данный момент он уже обновляется. +Кроме того, дополнительный параметр updating +разрешает использовать устаревший закэшированный ответ, +если на данный момент он уже обновляется. + + + + + + +[код ...] время + +http +server +location + + +Задаёт время кэширования для разных кодов ответа. +Например, директивы + +proxy_cache_valid 200 302 10m; +proxy_cache_valid 404 1m; + +задают время кэширования 10 минут для ответов с кодами 200 и 302, +и 1 минуту для ответов с кодом 404. + + + +Если указано только время кэширования, + +proxy_cache_valid 5m; + +то кэшируются только ответы 200, 301 и 302. + + + +Кроме того, можно кэшировать любые ответы с помощью параметра +any: + +proxy_cache_valid 200 302 10m; +proxy_cache_valid 301 1h; +proxy_cache_valid any 1m; + @@ -270,11 +297,13 @@ время -60 -http, server, location +60s +http +server +location -Директива задаёт таймаут для соединения с проксированным сервером. +Задаёт таймаут для соединения с проксированным сервером. Необходимо иметь в виду, что этот таймаут не может быть больше 75 секунд. @@ -284,13 +313,16 @@ имя -http, server, location +http +server +location -nginx не передаёт клиенту строки заголовка "Date", "Server", "X-Pad" и -"X-Accel-..." из ответа проксированного сервера. -Директива proxy_hide_header задаёт дополнительные строки. -Если же строки нужно наоброт разрешить, то нужно воспользоваться +nginx не передаёт клиенту поля заголовка
Date
, +
Server
,
X-Pad
и +
X-Accel-...
из ответа проксированного сервера. +Директива proxy_hide_header задаёт дополнительные поля. +Если же поля нужно напротив разрешить, следует воспользоваться директивой .
@@ -300,10 +332,12 @@ on | off off -http, server, location +http +server +location -Директива определяет, закрывать ли соединение с проксированным сервером +Определяет, закрывать ли соединение с проксированным сервером в случае, если клиент закрыл соединение, не дождавшись ответа. @@ -311,16 +345,19 @@ -имя ... +поле ... -http, server, location +http +server +location -Директива proxy_ignore_headers запрещает обработку некоторых -строк заголовка из ответа проксированного сервера. -В директиве можно указать строки "X-Accel-Redirect", "X-Accel-Expires", -"X-Accel-Limit-Rate" (1.1.6), "X-Accel-Buffering" (1.1.6), -"X-Accel-Charset" (1.1.6), "Expires", "Cache-Control" и "Set-Cookie" (0.8.44). +Запрещает обработку некоторых полей заголовка из ответа проксированного сервера. +В директиве можно указать поля
X-Accel-Redirect
, +
X-Accel-Expires
,
X-Accel-Limit-Rate
(1.1.6), +
X-Accel-Buffering
(1.1.6), +
X-Accel-Charset
(1.1.6),
Expires
, +
Cache-Control
и
Set-Cookie
(0.8.44).
@@ -329,12 +366,14 @@ on | off off -http, server, location +http +server +location -Директива определяет, передавать ли клиенту проксированные ответы с кодом -больше или равные 400 или же перенаправлять их на обработку nginx'у с помощью -директивы error_page. +Определяет, передавать ли клиенту проксированные ответы с кодом +больше либо равным 400, или же перенаправлять их на обработку nginx'у с помощью +директивы . @@ -353,49 +392,42 @@ off ... error timeout -http, server, location +http +server +location -Директива определяет, в каких случаях запрос будет передан следующему серверу: - +Определяет, в каких случаях запрос будет передан следующему серверу: + - -error — произшла ошибка соединения с сервером, передачи ему запроса или -чтения заголовка ответа сервера; - +error +произошла ошибка соединения с сервером, передачи ему запроса или +чтения заголовка ответа сервера; - -timeout — произошёл таймаут во время соединения с сервером, -передачи ему запроса или чтения заголовка ответа сервера; - +timeout +произошёл таймаут во время соединения с сервером, +передачи ему запроса или чтения заголовка ответа сервера; - -invalid_header — сервер вернул пустой или неверный ответ; - +invalid_header +сервер вернул пустой или неверный ответ; - -http_500 — сервер вернул ответ с кодом 500; - +http_500 +сервер вернул ответ с кодом 500; - -http_502 — сервер вернул ответ с кодом 502; - +http_502 +сервер вернул ответ с кодом 502; - -http_503 — сервер вернул ответ с кодом 503; - +http_503 +сервер вернул ответ с кодом 503; - -http_504 — сервер вернул ответ с кодом 504; - +http_504 +сервер вернул ответ с кодом 504; - -http_404 — сервер вернул ответ с кодом 404; - +http_404 +сервер вернул ответ с кодом 404; - -off — запрещает передачу запроса следующему серверу; - +off +запрещает передачу запроса следующему серверу. @@ -413,15 +445,17 @@ строка ... -http, server, location +http +server +location -Директива задаёт условия, при которых ответ не будет сохраняться в кэш. -Если значение хотя бы одной из строк переменных не пустое и не равно "0", +Задаёт условия, при которых ответ не будет сохраняться в кэш. +Если значение хотя бы одного из строковых параметров непустое и не равно “0”, то ответ не будет сохранён: -proxy_no_cache $cookie_nocache $arg_nocache$arg_comment; -proxy_no_cache $http_pragma $http_authorization; +proxy_no_cache $cookie_nocache $arg_nocache$arg_comment; +proxy_no_cache $http_pragma $http_authorization; Можно использовать совместно с директивой . @@ -432,32 +466,35 @@ URL -location, if в location, limit_except +location +if в location +limit_except -Директива задаёт адрес проксируемоего сервера и URI, на который +Задаёт адрес проксируемоего сервера и URI, на который будет отображаться location. Адрес может быть указан в виде доменного имени или адреса и порта, например, - proxy_pass http://localhost:8000/uri/; + proxy_pass http://localhost:8000/uri/; -или в виде пути unix сокета: +или в виде пути UNIX-сокета: - proxy_pass http://unix:/tmp/backend.socket:/uri/; + proxy_pass http://unix:/tmp/backend.socket:/uri/; -путь указан после слова unix и заключён между двумя двоеточиями. +путь указан после слова “unix” +и заключён между двумя двоеточиями. -Если доменное имя резолвится в несколько адресов, то все они будут -использоваться в режиме round-robin. -И кроме того, адрес можно задать +Если доменному имени соответствует несколько адресов, то все они будут +использоваться по очереди (round-robin). +И, кроме того, адрес можно задать группой серверов. При передаче запроса серверу часть URI, соответствующая location, -заменяется на URI, указанный в директиве proxy_pass. +заменяется на URI, указанный в директиве proxy_pass. Но из этого правила есть два исключения, в которых нельзя определить заменяемый location: @@ -467,12 +504,14 @@ -если внутри проксируемого location с помощью директивы rewrite изменяется -URI и именно с этой конфигурацией будет обрабатываться запрос (break): +если внутри проксируемого location с помощью директивы + изменяется +URI, и именно с этой конфигурацией будет обрабатываться запрос +(break): -location /name/ { - rewrite /name/([^/]+) /users?name=$1 break; - proxy_pass http://127.0.0.1; +location /name/ { + rewrite /name/([^/]+) /users?name=$1 break; + proxy_pass http://127.0.0.1; } Для этих случаев URI передаётся без отображения. @@ -482,21 +521,21 @@ -Кроме того, можно указать, чтобы URI запроса передавалось в том же виде, -как его прислал клиент, а не в в обработанном виде. +Кроме того, можно указать, чтобы URI запроса передавался в том же виде, +в каком его прислал клиент, а не в обработанном виде. Во время обработки -два и более слэшей преобразуются в один слэш: "//" — "/"; +два и более слэшей заменяются на один: “//” — “/”; -убираются ссылки на текущий каталог: "/./" — "/"; +убираются ссылки на текущий каталог: “/./” — “/”; -убираются ссылки на предыдущий каталог: "/dir/../" — "/". +убираются ссылки на предыдущий каталог: “/dir/../” — “/”. @@ -504,23 +543,23 @@ Если на сервер нужно передать URI в необработанном виде, то для этого -в директиве proxy_pass нужно указать URL сервера без URI: +в директиве proxy_pass нужно указать URL сервера без URI: -location /some/path/ { - proxy_pass http://127.0.0.1; +location /some/path/ { + proxy_pass http://127.0.0.1; } Имя сервера, его порт и передаваемый URI можно также полностью задать -в помощью переменных: +с помощью переменных: - proxy_pass http://$host$uri; + proxy_pass http://$host$uri; или так: - proxy_pass $request; + proxy_pass $request; @@ -528,47 +567,66 @@ В этом случае имя сервера ищется среди описанных групп серверов и если не найдено, то определяется с помощью -resolver'а. +'а. -имя +поле -http, server, location +http +server +location -Директива разрешает передавать от проксируемого сервера клиенту -запрещённые для передачи строки. +Разрешает передавать от проксируемого сервера клиенту +запрещённые для передачи поля заголовка. + + + + + + +время +60s +http +server +location + + +Задаёт таймаут при чтении ответа проксированного сервера. +Таймаут устанавливается не на всю передачу ответа, +а только между двумя операциями чтения. +Если по истечении этого времени проксируемый сервер ничего не передаст, +то nginx закрывает соединение. - - default | - off | - перенаправление замена +default +off +перенаправление замена default http server location -Директива задаёт текст, который нужно изменить в строках заголовка +Задаёт текст, который нужно изменить в полях заголовка
Location
и
Refresh
в ответе проксируемого сервера. -Предположим, проксируемый сервер вернул строку -
Location: http://localhost:8000/two/some/uri/
. +Предположим, проксируемый сервер вернул поле заголовка +“Location: http://localhost:8000/two/some/uri/”. Директива proxy_redirect http://localhost:8000/two/ http://frontend/one/; перепишет эту строку в виде -
Location: http://frontend/one/some/uri/
. +“Location: http://frontend/one/some/uri/”.
@@ -580,8 +638,9 @@ -Изменение по умолчанию, задаваемое значением default, использует -параметры директив и +Изменение по умолчанию, задаваемое значением default, +использует параметры директив + и . Поэтому две нижеприведённые конфигурации одинаковы: @@ -659,29 +718,15 @@
- -время -60 -http, server, location - - -Директива задаёт таймаут при чтении ответа проксированного сервера. -Таймаут устанавливается не на всю передачу ответа, -а только между двумя операциями чтения. -Если по истечении этого времени проксируемый сервер ничего не передаст, -то nginx закрывает соединение. - - - - - время 60 -http, server, location +http +server +location -Директива задаёт таймаут при передаче запроса проксированному серверу. +Задаёт таймаут при передаче запроса проксированному серверу. Таймаут устанавливается не на всю передачу запроса, а только между двумя операциями записи. Если по истечении этого времени проксируемый сервер не примет новых данных, @@ -692,53 +737,55 @@ -заголовок значение +поле значение Host $proxy_host Connection close -http, server, location +http +server +location -Директива позволяет переопределять или добавлять строки заголовка запроса, +Позволяет переопределять или добавлять поля заголовка запроса, передаваемые проксируемому серверу. В качестве значения можно использовать текст, переменные и их комбинации. Директивы наследуются с предыдущего уровня при условии, что на данном -уровне не описаны свои директивы proxy_set_header. -По умолчанию переопределяются только две строки: +уровне не описаны свои директивы proxy_set_header. +По умолчанию переопределяются только два поля: -proxy_set_header Host $proxy_host; -proxy_set_header Connection close; +proxy_set_header Host $proxy_host; +proxy_set_header Connection close; -Неизменённую строку заголовка запроса "Host" можно передать так: +Неизменённое поле заголовка запроса
Host
можно передать так: -proxy_set_header Host $http_host; +proxy_set_header Host $http_host;
-Однако, если эта строка отсутствует в запросе клиента, то ничего +Однако, если это поле отсутствует в заголовке запроса клиента, то ничего передаваться не будет. В этом случае лучше воспользоваться переменной -$host, её значение равно имени сервера в строке заголовка запроса "Host" -или же основному имени сервера, если строки нет: +$host - её значение равно имени сервера в поле
Host
+заголовка запроса, или же основному имени сервера, если поля нет: -proxy_set_header Host $host; +proxy_set_header Host $host;
Кроме того, можно передать имя сервера вместе с портом проксируемого сервера: -proxy_set_header Host $host:$proxy_port; +proxy_set_header Host $host:$proxy_port; -Если значение строки заголовка — пустая строка, то строка вообще +Если значение поля заголовка — пустая строка, то поле вообще не будет передаваться проксируемому серверу: -proxy_set_header Accept-Encoding ""; +proxy_set_header Accept-Encoding ""; @@ -748,12 +795,15 @@ on | off on -http, server, location +http +server +location -Директива определяет, использовать ли повторно SSL-сессии при +Определяет, использовать ли повторно SSL-сессии при работе с проксированным сервером. Если в логах появляются ошибки -"SSL3_GET_FINISHED:digest check failed", то можно попробовать выключить +“SSL3_GET_FINISHED:digest check failed”, +то можно попробовать выключить повторное использование сессий. @@ -761,25 +811,31 @@ -on | off | строка + + on | + off | + строка off -http, server, location +http +server +location -Директива разрешает сохранение на диск файлов. -Параметр "on" сохраняет файлы в соответствии с путями, указаными в директивах +Разрешает сохранение на диск файлов. +Параметр on сохраняет файлы в соответствии с путями, +указанными в директивах или . -Параметр "off" запрещает сохранение файлов. -Кроме того, имя файла можно явно задать с помощью строки с переменными: +Параметр off запрещает сохранение файлов. +Кроме того, имя файла можно задать явно с помощью строки с переменными: -proxy_store /data/www$original_uri; +proxy_store /data/www$original_uri; -Время модификации файлов выставляется согласно полученной строке -"Last-Modified" в заголовке ответа. +Время изменения файлов выставляется согласно полученному полю +
Last-Modified
в заголовке ответа. Ответ записывается во временный файл, а потом этот файл переименовывается. Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа могут располагаться на разных файловых системах, но нужно учитывать, @@ -795,20 +851,20 @@ неизменяемых файлов, например, так: location /images/ { - root /data/www; - open_file_cache_errors off; - error_page 404 = /fetch$uri; + root /data/www; + open_file_cache_errors off; + error_page 404 = /fetch$uri; } location /fetch/ { internal; - proxy_pass http://backend/; - proxy_store on; - proxy_store_access user:rw group:rw all:r; - proxy_temp_path /data/temp; + proxy_pass http://backend/; + proxy_store on; + proxy_store_access user:rw group:rw all:r; + proxy_temp_path /data/temp; - alias /data/www/; + alias /data/www/; }
@@ -817,19 +873,19 @@ или так: location /images/ { - root /data/www; - error_page 404 = @fetch; + root /data/www; + error_page 404 = @fetch; } location @fetch { internal; - proxy_pass http://backend; - proxy_store on; - proxy_store_access user:rw group:rw all:r; - proxy_temp_path /data/temp; + proxy_pass http://backend; + proxy_store on; + proxy_store_access user:rw group:rw all:r; + proxy_temp_path /data/temp; - root /data/www; + root /data/www; }
@@ -840,20 +896,23 @@ пользователи:права ... user:rw -http, server, location +http +server +location -Директива задаёт права доступа для создаваемых файлов и каталогов, например, +Задаёт права доступа для создаваемых файлов и каталогов, например, -proxy_store_access user:rw group:rw all:r; +proxy_store_access user:rw group:rw all:r; -Если заданы какие-либо права для groups или all, то права для user +Если заданы какие-либо права для group или +all, то права для user указывать необязательно: -proxy_store_access group:rw all:r; +proxy_store_access group:rw all:r; @@ -861,19 +920,25 @@ -путь [уровень1 [уровень2 [уровень3]]] + + путь + [уровень1 + [уровень2 + [уровень3]]] proxy_temp -http, server, location +http +server +location -Директива задаёт имя каталога для хранения временных файлов +Задаёт имя каталога для хранения временных файлов, полученных от другого сервера. В каталоге может использоваться иерархия подкаталогов до трёх уровней. Например, при такой конфигурации -proxy_temp_path /spool/nginx/proxy_temp 1 2; +proxy_temp_path /spool/nginx/proxy_temp 1 2; -имя временного будет такого вида: +временный файл будет следующего вида: /spool/nginx/proxy_temp/7/45/00000123457 @@ -884,29 +949,26 @@
-
+
-В модуле ngx_http_proxy_module есть встроенные переменные, +В модуле ngx_http_proxy_module есть встроенные переменные, которые можно использовать для формирования заголовков с помощью директивы : - + - -$proxy_host, эта переменная равна имени проксируемого хоста и порта; - +$proxy_host +имя проксируемого хоста и порт; - -$proxy_port, эта переменная равна порту проксируемого хоста; - +$proxy_port +порт проксируемого хоста; - -$proxy_add_x_forwarded_for, эта переменная равна строке заголовка запроса -клиента "X-Forwarded-For" и добавленной к ней через запятую переменной -$remote_addr. Если же строки "X-Forwarded-For" в запросе клиента нет, -то переменная $proxy_add_x_forwarded_for равна переменной $remote_addr. - - +$proxy_add_x_forwarded_for +поле заголовка запроса клиента
X-Forwarded-For
+и добавленная к нему через запятую переменная $remote_addr. +Если же поля
X-Forwarded-For
в заголовке запроса клиента нет, +то переменная $proxy_add_x_forwarded_for +равна переменной $remote_addr.