comparison xml/ru/docs/http/ngx_http_core_module.xml @ 617:368a449e85b8

Expanded documentation of what various parameters of the "listen" directive related to socket options do. While here, documented the fact that accept filters also work on NetBSD.
author Ruslan Ermilov <ru@nginx.com>
date Thu, 02 Aug 2012 13:24:07 +0000
parents f3ef5b77d22a
children af3f38e349eb
comparison
equal deleted inserted replaced
616:2fdd929c830e 617:368a449e85b8
1132 </note> 1132 </note>
1133 </para> 1133 </para>
1134 1134
1135 <para> 1135 <para>
1136 В директиве <literal>listen</literal> можно также указать несколько 1136 В директиве <literal>listen</literal> можно также указать несколько
1137 дополнительных параметров, специфичных для системных вызовов 1137 дополнительных параметров, специфичных для связанных с сокетами
1138 <c-func>listen</c-func> и <c-func>bind</c-func>. 1138 системных вызовов.
1139 Эти параметры можно задать в любой директиве <literal>listen</literal>, 1139 Эти параметры можно задать в любой директиве <literal>listen</literal>,
1140 но только один раз для указанной пары 1140 но только один раз для указанной пары
1141 <value>адрес</value>:<value>порт</value>. 1141 <value>адрес</value>:<value>порт</value>.
1142 <note> 1142 <note>
1143 До версии 0.8.21 их можно было указывать лишь в директиве 1143 До версии 0.8.21 их можно было указывать лишь в директиве
1144 <literal>listen</literal> с параметром <literal>default</literal>. 1144 <literal>listen</literal> совместно с параметром <literal>default</literal>.
1145 </note> 1145 </note>
1146 <list type="tag"> 1146 <list type="tag">
1147 1147
1148 <tag-name> 1148 <tag-name>
1149 <literal>setfib</literal>=<value>число</value> 1149 <literal>setfib</literal>=<value>число</value>
1150 </tag-name> 1150 </tag-name>
1151 <tag-desc> 1151 <tag-desc>
1152 этот параметр (0.8.44) задаёт для слушающего сокета соответствующую 1152 этот параметр (0.8.44) задаёт таблицу маршрутизации, FIB
1153 таблицу маршрутизации (FIB). 1153 (параметр <c-def>SO_SETFIB</c-def>) для слушающего сокета.
1154 В настоящий момент это работает только на FreeBSD. 1154 В настоящий момент это работает только на FreeBSD.
1155 </tag-desc> 1155 </tag-desc>
1156 1156
1157 <tag-name> 1157 <tag-name>
1158 <literal>backlog</literal>=<value>число</value> 1158 <literal>backlog</literal>=<value>число</value>
1159 </tag-name> 1159 </tag-name>
1160 <tag-desc> 1160 <tag-desc>
1161 задаёт параметр <literal>backlog</literal> в вызове 1161 задаёт параметр <literal>backlog</literal> в вызове
1162 <c-func>listen</c-func>. 1162 <c-func>listen</c-func>, который ограничивает
1163 По умолчанию <literal>backlog</literal> равен -1 для FreeBSD 1163 максимальный размер очереди ожидающих приёма соединений.
1164 По умолчанию <literal>backlog</literal> устанавливается равным -1 для FreeBSD
1164 и 511 для других платформ. 1165 и 511 для других платформ.
1165 </tag-desc> 1166 </tag-desc>
1166 1167
1167 <tag-name> 1168 <tag-name>
1168 <literal>rcvbuf</literal>=<value>размер</value> 1169 <literal>rcvbuf</literal>=<value>размер</value>
1169 </tag-name> 1170 </tag-name>
1170 <tag-desc> 1171 <tag-desc>
1171 задаёт параметр <c-def>SO_RCVBUF</c-def> для слушающего сокета 1172 задаёт размер буфера приёма
1173 (параметр <c-def>SO_RCVBUF</c-def>) для слушающего сокета.
1172 </tag-desc> 1174 </tag-desc>
1173 1175
1174 <tag-name> 1176 <tag-name>
1175 <literal>sndbuf</literal>=<value>размер</value> 1177 <literal>sndbuf</literal>=<value>размер</value>
1176 </tag-name> 1178 </tag-name>
1177 <tag-desc> 1179 <tag-desc>
1178 задаёт параметр <c-def>SO_SNDBUF</c-def> для слушающего сокета 1180 задаёт размер буфера передачи
1181 (параметр <c-def>SO_SNDBUF</c-def>) для слушающего сокета.
1179 </tag-desc> 1182 </tag-desc>
1180 1183
1181 <tag-name> 1184 <tag-name>
1182 <literal>accept_filter</literal>=<value>фильтр</value> 1185 <literal>accept_filter</literal>=<value>фильтр</value>
1183 </tag-name> 1186 </tag-name>
1184 <tag-desc> 1187 <tag-desc>
1185 задаёт название accept-фильтра. 1188 задаёт название accept-фильтра
1186 Работает только на FreeBSD, можно использовать два фильтра — 1189 (параметр <c-def>SO_ACCEPTFILTER</c-def>) для слушающего сокета,
1187 <literal>dataready</literal> и <literal>httpready</literal>. 1190 который включается для фильтрации входящих соединений
1188 По сигналу <c-def>SIGHUP</c-def> accept-фильтр можно менять только в 1191 перед передачей их в <c-func>accept</c-func>.
1189 последних версиях FreeBSD, начиная с 6.0, 5.4-STABLE и 4.11-STABLE. 1192 Работает только на FreeBSD и NetBSD 5.0+.
1193 Можно использовать два фильтра —
1194 <link url="http://man.freebsd.org/accf_data">dataready</link>
1195 и
1196 <link url="http://man.freebsd.org/accf_http">httpready</link>.
1190 </tag-desc> 1197 </tag-desc>
1191 1198
1192 <tag-name> 1199 <tag-name>
1193 <literal>deferred</literal> 1200 <literal>deferred</literal>
1194 </tag-name> 1201 </tag-name>
1195 <tag-desc> 1202 <tag-desc>
1196 указывает использовать отложенный <c-func>accept</c-func> на Linux 1203 указывает использовать отложенный <c-func>accept</c-func>
1197 с помощью опции <c-def>TCP_DEFER_ACCEPT</c-def>. 1204 (параметр <c-def>TCP_DEFER_ACCEPT</c-def> сокета) на Linux.
1198 </tag-desc> 1205 </tag-desc>
1199 1206
1200 <tag-name> 1207 <tag-name>
1201 <literal>bind</literal> 1208 <literal>bind</literal>
1202 </tag-name> 1209 </tag-name>
1221 1228
1222 <tag-name> 1229 <tag-name>
1223 <literal>ipv6only</literal>=<literal>on</literal>|<literal>off</literal> 1230 <literal>ipv6only</literal>=<literal>on</literal>|<literal>off</literal>
1224 </tag-name> 1231 </tag-name>
1225 <tag-desc> 1232 <tag-desc>
1226 параметр (0.7.42) задаёт значение параметра <c-def>IPV6_V6ONLY</c-def> 1233 этот параметр (0.7.42) определяет
1227 для слушающего сокета. 1234 (через параметр сокета <c-def>IPV6_V6ONLY</c-def>),
1235 будет ли слушающий на wildcard-адресе <literal>[::]</literal> IPv6-сокет
1236 принимать только IPv6-соединения, или же одновременно IPv6- и IPv4-соединения.
1228 По умолчанию параметр включён. 1237 По умолчанию параметр включён.
1229 Установить этот параметр можно только один раз на старте. 1238 Установить его можно только один раз на старте.
1230 <note> 1239 <note>
1231 До версии 1.3.4, если параметр не был задан явно, использовались 1240 До версии 1.3.4,
1241 если этот параметр не был задан явно, то для сокета действовали
1232 настройки операционной системы. 1242 настройки операционной системы.
1233 </note> 1243 </note>
1234 </tag-desc> 1244 </tag-desc>
1235 1245
1236 <tag-name> 1246 <tag-name>
1237 <literal>ssl</literal> 1247 <literal>ssl</literal>
1238 </tag-name> 1248 </tag-name>
1239 <tag-desc> 1249 <tag-desc>
1240 этот параметр (0.7.14) не имеет отношения к системным вызовам 1250 этот параметр (0.7.14) не имеет отношения к связанным с сокетами системным
1241 <c-func>listen</c-func> и <c-func>bind</c-func>, а позволяет указать, 1251 вызовам, а позволяет указать, что все соединения, принимаемые на этом порту,
1242 что все соединения, принимаемые на этом порту, должны работать 1252 должны работать в режиме SSL.
1243 в режиме SSL. 1253 Это позволяет задать компактную <link doc="configuring_https_servers.xml"
1244 Это позволяет задать компактную конфигурацию для сервера, 1254 id="single_http_https_server">конфигурацию</link> для сервера,
1245 работающего сразу в двух режимах — HTTP и HTTPS. 1255 работающего сразу в двух режимах — HTTP и HTTPS.
1246 <example>
1247 listen 80;
1248 listen 443 ssl;
1249 </example>
1250 </tag-desc> 1256 </tag-desc>
1251 1257
1252 <tag-name> 1258 <tag-name>
1253 <literal>so_keepalive</literal>=<literal>on</literal>|<literal>off</literal>|[<value>keepidle</value>]:[<value>keepintvl</value>]:[<value>keepcnt</value>] 1259 <literal>so_keepalive</literal>=<literal>on</literal>|<literal>off</literal>|[<value>keepidle</value>]:[<value>keepintvl</value>]:[<value>keepcnt</value>]
1254 </tag-name> 1260 </tag-name>
1255 <tag-desc> 1261 <tag-desc>
1256 этот параметр (1.1.11) конфигурирует для слушающего сокета 1262 этот параметр (1.1.11) конфигурирует для слушающего сокета
1257 поведение “TCP keepalive”. 1263 поведение “TCP keepalive”.
1258 Если этот параметр опущен, то для сокета будут действовать 1264 Если этот параметр опущен, то для сокета будут действовать
1259 стандартные системные настройки. 1265 настройки операционной системы.
1260 Если он установлен в значение “<literal>on</literal>”, то для сокета 1266 Если он установлен в значение “<literal>on</literal>”, то для сокета
1261 включается опция <c-def>SO_KEEPALIVE</c-def>. 1267 включается параметр <c-def>SO_KEEPALIVE</c-def>.
1262 Если он установлен в значение “<literal>off</literal>”, то для сокета 1268 Если он установлен в значение “<literal>off</literal>”, то для сокета
1263 опция <c-def>SO_KEEPALIVE</c-def> выключается. 1269 параметр <c-def>SO_KEEPALIVE</c-def> выключается.
1264 Некоторые операционные системы поддерживают настройку параметров 1270 Некоторые операционные системы поддерживают настройку параметров
1265 “TCP keepalive” на уровне сокета посредством опций 1271 “TCP keepalive” на уровне сокета посредством параметров
1266 <c-def>TCP_KEEPIDLE</c-def>, <c-def>TCP_KEEPINTVL</c-def> и 1272 <c-def>TCP_KEEPIDLE</c-def>, <c-def>TCP_KEEPINTVL</c-def> и
1267 <c-def>TCP_KEEPCNT</c-def>. 1273 <c-def>TCP_KEEPCNT</c-def>.
1268 На таких системах (в настоящий момент это Linux 2.4+, NetBSD 5+ и 1274 На таких системах (в настоящий момент это Linux 2.4+, NetBSD 5+ и
1269 FreeBSD 9.0-STABLE) 1275 FreeBSD 9.0-STABLE)
1270 их можно сконфигурировать с помощью параметров <value>keepidle</value>, 1276 их можно сконфигурировать с помощью параметров <value>keepidle</value>,
1271 <value>keepintvl</value> и <value>keepcnt</value>. 1277 <value>keepintvl</value> и <value>keepcnt</value>.
1272 Один или два параметра могут быть опущены, в таком случае для 1278 Один или два параметра могут быть опущены, в таком случае для
1273 соответствующей опции сокета будут действовать стандартные 1279 соответствующего параметра сокета будут действовать стандартные
1274 системные настройки. 1280 системные настройки.
1275 Например, 1281 Например,
1276 <example>so_keepalive=30m::10</example> 1282 <example>so_keepalive=30m::10</example>
1277 установит таймаут бездействия (<c-def>TCP_KEEPIDLE</c-def>) в 30 минут, 1283 установит таймаут бездействия (<c-def>TCP_KEEPIDLE</c-def>) в 30 минут,
1278 для интервала проб (<c-def>TCP_KEEPINTVL</c-def>) будет действовать 1284 для интервала проб (<c-def>TCP_KEEPINTVL</c-def>) будет действовать
1284 </para> 1290 </para>
1285 1291
1286 <para> 1292 <para>
1287 Пример: 1293 Пример:
1288 <example> 1294 <example>
1289 listen 127.0.0.1 default accept_filter=dataready backlog=1024; 1295 listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;
1290 </example> 1296 </example>
1291 </para> 1297 </para>
1292 1298
1293 </directive> 1299 </directive>
1294 1300
1827 <context>location</context> 1833 <context>location</context>
1828 1834
1829 <para> 1835 <para>
1830 Разрешает или запрещает сброс соединений по таймауту. 1836 Разрешает или запрещает сброс соединений по таймауту.
1831 Сброс делается следующим образом — перед закрытием сокета для него 1837 Сброс делается следующим образом — перед закрытием сокета для него
1832 ставится опция 1838 ставится параметр
1833 <c-def>SO_LINGER</c-def> 1839 <c-def>SO_LINGER</c-def>
1834 с таймаутом 0. 1840 с таймаутом 0.
1835 После чего при закрытии сокета клиенту отсылается TCP RST, а вся память, 1841 После чего при закрытии сокета клиенту отсылается TCP RST, а вся память,
1836 связанная с этим сокетом, освобождается. 1842 связанная с этим сокетом, освобождается.
1837 Это позволяет избежать длительного нахождения уже закрытого сокета в 1843 Это позволяет избежать длительного нахождения уже закрытого сокета в
1995 <para> 2001 <para>
1996 При установке в ненулевое значение nginx будет пытаться минимизировать 2002 При установке в ненулевое значение nginx будет пытаться минимизировать
1997 число операций отправки на клиентских сокетах либо при помощи флага 2003 число операций отправки на клиентских сокетах либо при помощи флага
1998 <c-def>NOTE_LOWAT</c-def> метода 2004 <c-def>NOTE_LOWAT</c-def> метода
1999 <link doc="../events.xml" id="kqueue"/>, 2005 <link doc="../events.xml" id="kqueue"/>,
2000 либо при помощи опции сокета <c-def>SO_SNDLOWAT</c-def>, 2006 либо при помощи параметра сокета <c-def>SO_SNDLOWAT</c-def>,
2001 с указанным размером. 2007 с указанным размером.
2002 </para> 2008 </para>
2003 2009
2004 <para> 2010 <para>
2005 Эта директива игнорируется на Linux, Solaris и Windows. 2011 Эта директива игнорируется на Linux, Solaris и Windows.
2293 <context>http</context> 2299 <context>http</context>
2294 <context>server</context> 2300 <context>server</context>
2295 <context>location</context> 2301 <context>location</context>
2296 2302
2297 <para> 2303 <para>
2298 Разрешает или запрещает использование опции <c-def>TCP_NODELAY</c-def>. 2304 Разрешает или запрещает использование параметра <c-def>TCP_NODELAY</c-def>.
2299 Опция включаются только при переходе соединения в состояние keep-alive. 2305 Параметр включаются только при переходе соединения в состояние keep-alive.
2300 </para> 2306 </para>
2301 2307
2302 </directive> 2308 </directive>
2303 2309
2304 2310
2308 <context>http</context> 2314 <context>http</context>
2309 <context>server</context> 2315 <context>server</context>
2310 <context>location</context> 2316 <context>location</context>
2311 2317
2312 <para> 2318 <para>
2313 Разрешает или запрещает использование опции сокета 2319 Разрешает или запрещает использование параметра сокета
2314 <c-def>TCP_NOPUSH</c-def> во FreeBSD или 2320 <c-def>TCP_NOPUSH</c-def> во FreeBSD или
2315 <c-def>TCP_CORK</c-def> в Linux. 2321 <c-def>TCP_CORK</c-def> в Linux.
2316 Опции включаются только при использовании <link id="sendfile"/>. 2322 Параметр включаются только при использовании <link id="sendfile"/>.
2317 Включение опции позволяет 2323 Включение параметра позволяет
2318 <list type="bullet"> 2324 <list type="bullet">
2319 2325
2320 <listitem> 2326 <listitem>
2321 передавать заголовок ответа и начало файла в одном пакете 2327 передавать заголовок ответа и начало файла в одном пакете
2322 в Linux и во FreeBSD&nbsp;4.*; 2328 в Linux и во FreeBSD&nbsp;4.*;
2843 <var>$tcpinfo_snd_cwnd</var>, 2849 <var>$tcpinfo_snd_cwnd</var>,
2844 <var>$tcpinfo_rcv_space</var> 2850 <var>$tcpinfo_rcv_space</var>
2845 </tag-name> 2851 </tag-name>
2846 <tag-desc> 2852 <tag-desc>
2847 информация о клиентском TCP-соединении; доступна на системах, 2853 информация о клиентском TCP-соединении; доступна на системах,
2848 поддерживающих опцию сокета <c-def>TCP_INFO</c-def> 2854 поддерживающих параметр сокета <c-def>TCP_INFO</c-def>
2849 </tag-desc> 2855 </tag-desc>
2850 2856
2851 <tag-name><var>$uri</var></tag-name> 2857 <tag-name><var>$uri</var></tag-name>
2852 <tag-desc> 2858 <tag-desc>
2853 текущий URI запроса в <link id="location">нормализованном</link> виде 2859 текущий URI запроса в <link id="location">нормализованном</link> виде