Path: blob/main/xml/ru/docs/http/ngx_http_memcached_module.xml
1 views
<?xml version="1.0"?>12<!--3Copyright (C) Igor Sysoev4Copyright (C) Nginx, Inc.5-->67<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">89<module name="Модуль ngx_http_memcached_module"10link="/ru/docs/http/ngx_http_memcached_module.html"11lang="ru"12rev="19">1314<section id="summary">1516<para>17Модуль <literal>ngx_http_memcached_module</literal> позволяет получать18ответ из сервера memcached.19Ключ задаётся в переменной <var>$memcached_key</var>.20Ответ в memcached должен быть предварительно помещён внешним по отношению21к nginx’у способом.22</para>2324</section>252627<section id="example" name="Пример конфигурации">2829<para>30<example>31server {32location / {33set $memcached_key "$uri?$args";34memcached_pass host:11211;35error_page 404 502 504 = @fallback;36}3738location @fallback {39proxy_pass http://backend;40}41}42</example>43</para>4445</section>464748<section id="directives" name="Директивы">4950<directive name="memcached_allow_upstream">51<syntax><value>строка</value> ...</syntax>52<default/>53<context>http</context>54<context>server</context>55<context>location</context>56<appeared-in>1.29.3</appeared-in>5758<para>59Задаёт условия, при которых доступ к серверу memcached60будет разрешён или <link id="denied">запрещён</link>.61Если все значения строковых параметров непустые62и не равны “0”, то доступ разрешён.63Условия проверяются каждый раз64перед установлением соединения с сервером memcached.65В значении параметров допустимо использование переменных:66<example>67geo $upstream_last_addr $allow {68volatile;6910.10.0.0/24 1;70}7172server {73listen 127.0.0.1:8080;7475location / {76memcached_pass host:11211;77memcached_allow_upstream $allow;78...79}80}81</example>82</para>8384<para>85<note>86Директива доступна как часть87<commercial_version>коммерческой подписки</commercial_version>.88</note>89</para>9091</directive>929394<directive name="memcached_bind">95<syntax>96<value>адрес</value>97[<literal>transparent </literal>] |98<literal>off</literal></syntax>99<default/>100<context>http</context>101<context>server</context>102<context>location</context>103<appeared-in>0.8.22</appeared-in>104105<para>106Задаёт локальный IP-адрес с необязательным портом (1.11.2),107который будет использоваться в исходящих соединениях с сервером memcached.108В значении параметра допустимо использование переменных (1.3.12).109Специальное значение <literal>off</literal> (1.3.12) отменяет действие110унаследованной с предыдущего уровня конфигурации111директивы <literal>memcached_bind</literal>, позволяя системе112самостоятельно выбирать локальный IP-адрес и порт.113</para>114115<para id="memcached_bind_transparent">116Параметр <literal>transparent</literal> (1.11.0) позволяет117задать нелокальный IP-aдрес, который будет использоваться в118исходящих соединениях с сервером memcached,119например, реальный IP-адрес клиента:120<example>121memcached_bind $remote_addr transparent;122</example>123Для работы параметра124обычно требуется125запустить рабочие процессы nginx с привилегиями126<link doc="../ngx_core_module.xml" id="user">суперпользователя</link>.127В Linux этого не требуется (1.13.8), так как если128указан параметр <literal>transparent</literal>, то рабочие процессы129наследуют capability <literal>CAP_NET_RAW</literal> из главного процесса.130Также необходимо настроить таблицу маршрутизации ядра131для перехвата сетевого трафика с сервера memcached.132</para>133134</directive>135136137<directive name="memcached_bind_dynamic">138<syntax><literal>on</literal> | <literal>off</literal></syntax>139<default>off</default>140<context>http</context>141<context>server</context>142<context>location</context>143<appeared-in>1.29.3</appeared-in>144145<para>146Если включено, операция <link id="memcached_bind">bind</link> осуществляется147при каждой попытке соединения.148</para>149150<para>151<note>152Директива доступна как часть153<commercial_version>коммерческой подписки</commercial_version>.154</note>155</para>156157</directive>158159160<directive name="memcached_buffer_size">161<syntax><value>размер</value></syntax>162<default>4k|8k</default>163<context>http</context>164<context>server</context>165<context>location</context>166167<para>168Задаёт <value>размер</value> буфера, в который будет читаться ответ,169получаемый от сервера memcached.170Ответ синхронно передаётся клиенту сразу же по мере его поступления.171</para>172173</directive>174175176<directive name="memcached_connect_timeout">177<syntax><value>время</value></syntax>178<default>60s</default>179<context>http</context>180<context>server</context>181<context>location</context>182183<para>184Задаёт таймаут для установления соединения с сервером memcached.185Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.186</para>187188</directive>189190191<directive name="memcached_gzip_flag">192<syntax><value>флаг</value></syntax>193<default></default>194<context>http</context>195<context>server</context>196<context>location</context>197<appeared-in>1.3.6</appeared-in>198199<para>200Включает проверку указанного <value>флага</value> в ответе201сервера memcached и установку поля “<literal>Content-Encoding</literal>”202заголовка ответа в “<literal>gzip</literal>”, если этот флаг установлен.203</para>204205</directive>206207208<directive name="memcached_next_upstream">209<syntax>210<literal>error</literal> |211<literal>timeout</literal> |212<literal>denied</literal> |213<literal>invalid_response</literal> |214<literal>not_found</literal> |215<literal>off</literal>216...</syntax>217<default>error timeout</default>218<context>http</context>219<context>server</context>220<context>location</context>221222<para>223Определяет, в каких случаях запрос будет передан следующему серверу:224<list type="tag">225226<tag-name><literal>error</literal></tag-name>227<tag-desc>произошла ошибка соединения с сервером, передачи ему запроса или228чтения заголовка ответа сервера;</tag-desc>229230<tag-name><literal>timeout</literal></tag-name>231<tag-desc>произошёл таймаут во время соединения с сервером,232передачи ему запроса или чтения заголовка ответа сервера;</tag-desc>233234<tag-name id="denied"><literal>denied</literal></tag-name>235<tag-desc>сервер <link id="proxy_allow_upstream">отклонил</link>236соединение (1.29.3);237<para>238<note>239Параметр доступен как часть240<commercial_version>коммерческой подписки</commercial_version>.241</note>242</para>243</tag-desc>244245<tag-name><literal>invalid_response</literal></tag-name>246<tag-desc>сервер вернул пустой или неверный ответ;</tag-desc>247248<tag-name><literal>not_found</literal></tag-name>249<tag-desc>сервер не нашёл ответ;</tag-desc>250251<tag-name><literal>off</literal></tag-name>252<tag-desc>запрещает передачу запроса следующему серверу.</tag-desc>253254</list>255</para>256257<para>258Необходимо понимать, что передача запроса следующему серверу возможна259только при условии, что клиенту ещё ничего не передавалось.260То есть, если ошибка или таймаут возникли в середине передачи ответа,261то исправить это уже невозможно.262</para>263264<para>265Директива также определяет, что считается266<link doc="ngx_http_upstream_module.xml" id="max_fails">неудачной267попыткой</link> работы с сервером.268Случаи <literal>error</literal>, <literal>timeout</literal>,269<literal>denied</literal> и270<literal>invalid_response</literal>271всегда считаются неудачными попытками, даже если они не указаны в директиве.272Случай <literal>not_found</literal>273никогда не считается неудачной попыткой.274</para>275276<para>277Передача запроса следующему серверу может быть ограничена по278<link id="memcached_next_upstream_tries">количеству попыток</link>279и по <link id="memcached_next_upstream_timeout">времени</link>.280</para>281282</directive>283284285<directive name="memcached_next_upstream_timeout">286<syntax><value>время</value></syntax>287<default>0</default>288<context>http</context>289<context>server</context>290<context>location</context>291<appeared-in>1.7.5</appeared-in>292293<para>294Ограничивает время, в течение которого возможна передача запроса295<link id="memcached_next_upstream">следующему серверу</link>.296Значение <literal>0</literal> отключает это ограничение.297</para>298299</directive>300301302<directive name="memcached_next_upstream_tries">303<syntax><value>число</value></syntax>304<default>0</default>305<context>http</context>306<context>server</context>307<context>location</context>308<appeared-in>1.7.5</appeared-in>309310<para>311Ограничивает число допустимых попыток для передачи запроса312<link id="memcached_next_upstream">следующему серверу</link>.313Значение <literal>0</literal> отключает это ограничение.314</para>315316</directive>317318319<directive name="memcached_pass">320<syntax><value>адрес</value></syntax>321<default/>322<context>location</context>323<context>if в location</context>324325<para>326Задаёт адрес сервера memcached.327Адрес может быть указан в виде доменного имени или IP-адреса,328и порта:329<example>330memcached_pass localhost:11211;331</example>332или в виде пути UNIX-сокета:333<example>334memcached_pass unix:/tmp/memcached.socket;335</example>336</para>337338<para>339Если доменному имени соответствует несколько адресов, то все они будут340использоваться по очереди (round-robin).341И, кроме того, адрес может быть342<link doc="ngx_http_upstream_module.xml">группой серверов</link>.343</para>344345</directive>346347348<directive name="memcached_read_timeout">349<syntax><value>время</value></syntax>350<default>60s</default>351<context>http</context>352<context>server</context>353<context>location</context>354355<para>356Задаёт таймаут при чтении ответа сервера memcached.357Таймаут устанавливается не на всю передачу ответа,358а только между двумя операциями чтения.359Если по истечении этого времени сервер memcached ничего не передаст,360соединение закрывается.361</para>362363</directive>364365366<directive name="memcached_send_timeout">367<syntax><value>время</value></syntax>368<default>60s</default>369<context>http</context>370<context>server</context>371<context>location</context>372373<para>374Задаёт таймаут при передаче запроса серверу memcached.375Таймаут устанавливается не на всю передачу запроса,376а только между двумя операциями записи.377Если по истечении этого времени сервер memcached не примет новых данных,378соединение закрывается.379</para>380381</directive>382383384<directive name="memcached_socket_keepalive">385<syntax><literal>on</literal> | <literal>off</literal></syntax>386<default>off</default>387<context>http</context>388<context>server</context>389<context>location</context>390<appeared-in>1.15.6</appeared-in>391392<para>393Конфигурирует поведение “TCP keepalive”394для исходящих соединений к серверу memcached.395По умолчанию для сокета действуют настройки операционной системы.396Если указано значение “<literal>on</literal>”, то397для сокета включается параметр <c-def>SO_KEEPALIVE</c-def>.398</para>399400</directive>401402</section>403404405<section id="variables" name="Встроенные переменные">406407<para>408<list type="tag">409410<tag-name id="var_memcached_key"><var>$memcached_key</var></tag-name>411<tag-desc>412Задаёт ключ для получения ответа из сервера memcached.413</tag-desc>414415</list>416</para>417418</section>419420</module>421422423