nginx

Модуль ngx_http_core_module


english
русский

简体中文
עברית
日本語
türkçe

новости [en]
об nginx
скачать
безопасность [en]
pgp ключи [en]
документация
faq
ссылки [en]
книги [en]
поддержка
пожертвования [en]

trac
wiki
twitter
nginx.com
Директивы
     aio
     alias
     chunked_transfer_encoding
     client_body_buffer_size
     client_body_in_file_only
     client_body_in_single_buffer
     client_body_temp_path
     client_body_timeout
     client_header_buffer_size
     client_header_timeout
     client_max_body_size
     connection_pool_size
     default_type
     directio
     directio_alignment
     disable_symlinks
     error_page
     etag
     http
     if_modified_since
     ignore_invalid_headers
     internal
     keepalive_disable
     keepalive_requests
     keepalive_timeout
     large_client_header_buffers
     limit_except
     limit_rate
     limit_rate_after
     lingering_close
     lingering_time
     lingering_timeout
     listen
     location
     log_not_found
     log_subrequest
     max_ranges
     merge_slashes
     msie_padding
     msie_refresh
     open_file_cache
     open_file_cache_errors
     open_file_cache_min_uses
     open_file_cache_valid
     optimize_server_names
     port_in_redirect
     postpone_output
     read_ahead
     recursive_error_pages
     request_pool_size
     reset_timedout_connection
     resolver
     resolver_timeout
     root
     satisfy
     satisfy_any
     send_lowat
     send_timeout
     sendfile
     sendfile_max_chunk
     server
     server_name
     server_name_in_redirect
     server_names_hash_bucket_size
     server_names_hash_max_size
     server_tokens
     tcp_nodelay
     tcp_nopush
     try_files
     types
     types_hash_bucket_size
     types_hash_max_size
     underscores_in_headers
     variables_hash_bucket_size
     variables_hash_max_size
Встроенные переменные

Директивы

синтаксис: aio on | off | sendfile;
умолчание:
aio off;
контекст: http, server, location

Эта директива появилась в версии 0.8.11.

Разрешает или запрещает использование файлового асинхронного ввода-вывода (AIO) во FreeBSD и Linux.

Во FreeBSD AIO можно использовать, начиная с FreeBSD 4.3. AIO можно либо собрать в ядре статически:

options VFS_AIO

либо загрузить динамически через загружаемый модуль ядра:

kldload aio

В версиях FreeBSD 5 и 6 включение AIO статически или динамически на стадии загрузки ядра приводит к тому, что вся сетевая подсистема будет использовать блокировку Giant, что может негативно сказаться на производительности системы в целом. Это ограничение устранено во FreeBSD 6.4-STABLE в 2009 году и во FreeBSD 7. Однако, начиная с FreeBSD 5.3 есть возможность включать AIO, не связывая сетевую подсистему блокировкой Giant — для этого модуль AIO нужно подгружать уже после загрузки ядра. В этом случае в /var/log/messages появится следующее сообщение:

WARNING: Network stack Giant-free, but aio requires Giant.
Consider adding 'options NET_WITH_GIANT' or setting debug.mpsafenet=0

которое можно смело проигнорировать.

Требование использовать блокировку Giant в AIO связано с тем, что FreeBSD поддерживает асинхронные вызовы aio_read() и aio_write() для работы с сокетами. Но поскольку nginx использует AIO только для работы с диском, то проблем не возникает.

Для работы AIO нужно выключить sendfile:

location /video/ {
    sendfile       off;
    aio            on;
    output_buffers 1 64k;
}

Кроме того, начиная с FreeBSD 5.2.1 и nginx 0.8.12, AIO также можно использовать для подгрузки данных для sendfile():

location /video/ {
    sendfile       on;
    tcp_nopush     on;
    aio            sendfile;
}

В такой конфигурации функция sendfile() вызывается с флагом SF_NODISKIO, в результате она не блокируется на диске, а сообщает об отсутствии данных в памяти, после чего nginx инициирует асинхронную подгрузку данных, читая только один байт. При этом ядро FreeBSD подгружает в память первые 128K байт файла, однако при последующих чтениях файл подгружается частями только по 16K. Изменить это можно с помощью директивы read_ahead.

В Linux AIO можно использовать только начиная с версии ядра 2.6.22, и, кроме того, ещё необходимо дополнительно включать directio, иначе чтение будет блокирующимся:

location /video/ {
    aio            on;
    directio       512;
    output_buffers 1 128k;
}

Поскольку directio в Linux можно использовать только для чтения блоков, выравненных на границу 512 байт (или 4К для XFS), то невыравненный конец файла будет читаться блокированно. То же относится к запросам с указанием диапазона запрашиваемых байт (byte-range requests) и к запросам FLV не с начала файла: чтение невыравненных начала и конца ответа будет блокирующимся. Явно выключать sendfile не нужно, так как при использовании directio он выключается автоматически.

синтаксис: alias путь;
умолчание:
контекст: location

Задаёт замену для указанного location’а. Например, при такой конфигурации

location /i/ {
    alias /data/w3/images/;
}

на запрос “/i/top.gif” будет отдан файл /data/w3/images/top.gif.

В значении параметра путь можно использовать переменные, кроме $document_root и $realpath_root.

Если alias используется внутри location’а, заданного регулярным выражением, то регулярное выражение должно содержать выделения, а сам alias — ссылки на эти выделения (0.7.40), например:

location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
    alias /data/w3/images/$1;
}

Если location и последняя часть значения директивы совпадают:

location /images/ {
    alias /data/w3/images/;
}

то лучше воспользоваться директивой root:

location /images/ {
    root /data/w3;
}

синтаксис: chunked_transfer_encoding on | off;
умолчание:
chunked_transfer_encoding on;
контекст: http, server, location

Позволяет запретить формат передачи данных частями (chunked transfer encoding) в HTTP/1.1. Это может понадобиться при использовании программ, не поддерживающих chunked encoding, несмотря на требования стандарта.

синтаксис: client_body_buffer_size размер;
умолчание:
client_body_buffer_size 8k|16k;
контекст: http, server, location

Задаёт размер буфера для чтения тела запроса клиента. Если тело запроса больше заданного буфера, то всё тело запроса или только его часть записывается во временный файл. По умолчанию размер одного буфера равен двум размерам страницы. На x86, других 32-битных платформах и x86-64 это 8K. На других 64-битных платформах это обычно 16K.

синтаксис: client_body_in_file_only on | clean | off;
умолчание:
client_body_in_file_only off;
контекст: http, server, location

Определяет, сохранять ли всё тело запроса клиента в файл. Директиву можно использовать для отладки и при использовании переменной $request_body_file или метода $r->request_body_file модуля ngx_http_perl_module.

При установке значения on временные файлы по окончании обработки запроса не удаляются.

Значение clean разрешает удалять временные файлы, оставшиеся по окончании обработки запроса.

синтаксис: client_body_in_single_buffer on | off;
умолчание:
client_body_in_single_buffer off;
контекст: http, server, location

Определяет, сохранять ли всё тело запроса клиента в одном буфере. Директива рекомендуется при использовании переменной $request_body для уменьшения требуемого числа операций копирования.

синтаксис: client_body_temp_path путь [уровень1 [уровень2 [уровень3]]];
умолчание:
client_body_temp_path client_body_temp;
контекст: http, server, location

Задаёт каталог для хранения временных файлов с телами запросов клиентов. В каталоге может использоваться иерархия подкаталогов до трёх уровней. Например, при такой конфигурации

client_body_temp_path /spool/nginx/client_temp 1 2;

временный файл будет следующего вида:

/spool/nginx/client_temp/7/45/00000123457

синтаксис: client_body_timeout время;
умолчание:
client_body_timeout 60s;
контекст: http, server, location

Задаёт таймаут при чтении тела запроса клиента. Таймаут устанавливается не на всю передачу тела запроса, а только между двумя последовательными операциями чтения. Если по истечении этого времени клиент ничего не передаст, то клиенту возвращается ошибка 408 (Request Time-out).

синтаксис: client_header_buffer_size размер;
умолчание:
client_header_buffer_size 1k;
контекст: http, server

Задаёт размер буфера для чтения заголовка запроса клиента. Для большинства запросов достаточно буфера размером в 1K байт. Однако если в запросе есть длинные cookies, или же запрос пришёл от WAP-клиента, то он может не поместиться в 1K. Поэтому, если строка запроса или поле заголовка запроса не помещаются полностью в этот буфер, то выделяются буферы большего размера, задаваемые директивой large_client_header_buffers.

синтаксис: client_header_timeout время;
умолчание:
client_header_timeout 60s;
контекст: http, server

Задаёт таймаут при чтении заголовка запроса клиента. Если по истечении этого времени клиент не передаст полностью заголовок, то клиенту возвращается ошибка 408 (Request Time-out).

синтаксис: client_max_body_size размер;
умолчание:
client_max_body_size 1m;
контекст: http, server, location

Задаёт максимально допустимый размер тела запроса клиента, указываемый в поле “Content-Length” заголовка запроса. Если размер больше заданного, то клиенту возвращается ошибка 413 (Request Entity Too Large). Следует иметь в виду, что браузеры не умеют корректно показывать эту ошибку. Установка параметра размер в 0 отключает проверку размера тела запроса клиента.

синтаксис: connection_pool_size размер;
умолчание:
connection_pool_size 256;
контекст: http, server

Позволяет производить точную настройку выделений памяти под конкретные соединения. Эта директива не оказывает существенного влияния на производительность и её не следует использовать.

синтаксис: default_type mime-тип;
умолчание:
default_type text/plain;
контекст: http, server, location

Задаёт MIME-тип ответов по умолчанию. Соответствие расширений имён файлов MIME-типу ответов задаётся с помощью директивы types.

синтаксис: directio размер | off;
умолчание:
directio off;
контекст: http, server, location

Эта директива появилась в версии 0.7.7.

Разрешает использовать флаги O_DIRECT (FreeBSD, Linux), F_NOCACHE (Mac OS X) или функцию directio() (Solaris) при чтении файлов, размер которых больше либо равен указанному. Директива автоматически запрещает (0.7.15) использование sendfile для данного запроса. Рекомендуется использовать для больших файлов:

directio 4m;

или при использовании aio в Linux.

синтаксис: directio_alignment размер;
умолчание:
directio_alignment 512;
контекст: http, server, location

Эта директива появилась в версии 0.8.11.

Устанавливает выравнивание для directio. В большинстве случаев достаточно 512-байтового выравнивания, однако при использовании XFS под Linux его нужно увеличить до 4K.

синтаксис: disable_symlinks off;
disable_symlinks on | if_not_owner [from=часть];
умолчание:
disable_symlinks off;
контекст: http, server, location

Эта директива появилась в версии 1.1.15.

Определяет, как следует поступать с символическими ссылками при открытии файлов:

off
Символические ссылки в пути допускаются и не проверяются. Это стандартное поведение.
on
Если любой компонент пути является символической ссылкой, доступ к файлу запрещается.
if_not_owner
Доступ к файлу запрещается, если любой компонент пути является символической ссылкой, а ссылка и объект, на который она ссылается, имеют разных владельцев.
from=часть
При проверке символических ссылок (параметры on и if_not_owner) обычно проверяются все компоненты пути. Можно не проверять символические ссылки в начальной части пути, указав дополнительно параметр from=часть. В этом случае символические ссылки проверяются лишь начиная с компонента пути, который следует за заданной начальной частью. Если значение не является начальной частью проверяемого пути, путь проверяется целиком, как если бы этот параметр не был указан вовсе. Если значение целиком совпадает с именем файла, символические ссылки не проверяются. В значении параметра можно использовать переменные.

Пример:

disable_symlinks on from=$document_root;

Эта директива доступна только на системах, в которых есть интерфейсы openat() и fstatat(). К таким системам относятся современные версии FreeBSD, Linux и Solaris.

Параметры on и if_not_owner требуют дополнительных затрат на обработку.

На системах, не поддерживающих операцию открытия каталогов только для поиска, использование этих параметров требует, чтобы рабочие процессы имели право читать все проверяемые каталоги.

Модули ngx_http_autoindex_module, ngx_http_random_index_module и ngx_http_dav_module в настоящий момент игнорируют эту директиву.

синтаксис: error_page код ... [=[ответ]] uri;
умолчание:
контекст: http, server, location, if в location

Задаёт URI, который будет показываться для указанных ошибок. Директивы error_page наследуются с предыдущего уровня при условии, что на данном уровне не описаны свои директивы error_page. В значении uri можно использовать переменные.

Пример:

error_page 404             /404.html;
error_page 500 502 503 504 /50x.html;

Кроме того, можно поменять код ответа на другой, используя синтаксис вида “=ответ”, например:

error_page 404 =200 /empty.gif;

Если ошибочный ответ обрабатывается проксированным сервером или FastCGI-сервером, и этот сервер может вернуть разные коды ответов, например, 200, 302, 401 или 404, то можно выдавать возвращаемый им код:

error_page 404 = /404.php;

Также существует возможность использовать перенаправления для обработки ошибок:

error_page 403      http://example.com/forbidden.html;
error_page 404 =301 http://example.com/notfound.html;

В этому случае клиенту возвращается код ответа 302. Его можно изменить только на один из кодов статуса, относящихся к перенаправлениям (301, 302, 303 и 307).

Если при внутреннем перенаправлении не нужно менять URI, то можно передать обработку ошибки в именованный location:

location / {
    error_page 404 = @fallback;
}

location @fallback {
    proxy_pass http://backend;
}

Если при обработке uri происходит ошибка, клиенту возвращается ответ с кодом статуса последней случившейся ошибки.

синтаксис: etag on | off;
умолчание:
etag on;
контекст: http, server, location

Эта директива появилась в версии 1.3.3.

Разрешает или запрещает автоматическую генерацию поля “ETag” заголовка ответа для статических ресурсов.

синтаксис: http { ... }
умолчание:
контекст: main

Предоставляет контекст конфигурационного файла, в котором указываются директивы HTTP-сервера.

синтаксис: if_modified_since off | exact | before;
умолчание:
if_modified_since exact;
контекст: http, server, location

Эта директива появилась в версии 0.7.24.

Определяет, как сравнивать время модификации ответа с временем в поле “If-Modified-Since” заголовка запроса:

off
не проверять поле “If-Modified-Since” заголовка запроса (0.7.34);
exact
точное совпадение;
before
время модификации ответа меньше или равно времени, заданному в поле “If-Modified-Since” заголовка запроса.

синтаксис: ignore_invalid_headers on | off;
умолчание:
ignore_invalid_headers on;
контекст: http, server

Если включено, nginx игнорирует поля заголовка с недопустимыми именами. Допустимыми считаются имена, состоящие из английских букв, цифр, дефисов и возможно знаков подчёркивания (последнее контролируется директивой underscores_in_headers).

Директива может быть указана на уровне server в сервере по умолчанию. В этом случае её значение распространяется на все виртуальные серверы, слушающие на том же адресе и порту.

синтаксис: internal;
умолчание:
контекст: location

Указывает, что location может использоваться только для внутренних запросов. Для внешних запросов клиенту будет возвращаться ошибка 404 (Not Found). Внутренними запросами являются:

  • запросы, перенаправленные директивами error_page, index, random_index и try_files;
  • запросы, перенаправленные с помощью поля “X-Accel-Redirect” заголовка ответа вышестоящего сервера;
  • подзапросы, формируемые командой “include virtual” модуля ngx_http_ssi_module и директивами модуля ngx_http_addition_module;
  • запросы, изменённые директивой rewrite.

Пример:

error_page 404 /404.html;

location /404.html {
    internal;
}

Для предотвращения зацикливания, которое может возникнуть при использовании некорректных конфигураций, количество внутренних перенаправлений ограничено десятью. По достижении этого ограничения будет возвращена ошибка 500 (Internal Server Error). В таком случае в лог-файле ошибок можно увидеть сообщение “rewrite or internal redirection cycle”.

синтаксис: keepalive_disable none | браузер ...;
умолчание:
keepalive_disable msie6;
контекст: http, server, location

Запрещает keep-alive соединения с некорректно ведущими себя браузерами. Параметры браузер указывают, на какие браузеры это распространяется. Значение msie6 запрещает keep-alive соединения со старыми версиями MSIE после получения запроса POST. Значение safari запрещает keep-alive соединения с Safari и подобными им браузерами на Mac OS X и подобных ей ОС. Значение none разрешает keep-alive соединения со всеми браузерами.

До версии 1.1.18 под значение safari подпадали все Safari и подобные им браузеры на всех ОС, и keep-alive соединения с ними были по умолчанию запрещены.

синтаксис: keepalive_requests число;
умолчание:
keepalive_requests 100;
контекст: http, server, location

Эта директива появилась в версии 0.8.0.

Задаёт максимальное число запросов, которые можно сделать по одному keep-alive соединению. После того, как будет сделано максимальное число запросов, соединение закрывается.

синтаксис: keepalive_timeout таймаут [заголовок_таймаута];
умолчание:
keepalive_timeout 75s;
контекст: http, server, location

Первый параметр задаёт таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера. Второй необязательный параметр задаёт значение в поле “Keep-Alive: timeout=время” заголовка ответа. Два параметра могут отличаться друг от друга.

Поле “Keep-Alive: timeout=время” заголовка понимают Mozilla и Konqueror. MSIE сам закрывает keep-alive соединение примерно через 60 секунд.

синтаксис: large_client_header_buffers число размер;
умолчание:
large_client_header_buffers 4 8k;
контекст: http, server

Задаёт максимальное число и размер буферов для чтения большого заголовка запроса клиента. Строка запроса не должна превышать размера одного буфера, иначе клиенту возвращается ошибка 414 (Request-URI Too Large). Поле заголовка запроса также не должно превышать размера одного буфера, иначе клиенту возвращается ошибка 400 (Bad Request). Буферы выделяются только по мере необходимости. По умолчанию размер одного буфера равен 8K байт. Если по окончании обработки запроса соединение переходит в состояние keep-alive, эти буферы освобождаются.

синтаксис: limit_except метод ... { ... }
умолчание:
контекст: location

Ограничивает HTTP-методы, доступные внутри location. Параметр метод может быть одним из GET, HEAD, POST, PUT, DELETE, MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK или PATCH. Если разрешён метод GET, то метод HEAD также будет разрешён. Доступ к остальным методам может быть ограничен при помощи директив модулей ngx_http_access_module и ngx_http_auth_basic_module:

limit_except GET {
    allow 192.168.1.0/32;
    deny  all;
}

Обратите внимание, что данное ограничение действует для всех методов, кроме GET и HEAD.

синтаксис: limit_rate скорость;
умолчание:
limit_rate 0;
контекст: http, server, location, if в location

Ограничивает скорость передачи ответа клиенту. Скорость задаётся в байтах в секунду. Значение 0 отключает ограничение скорости. Ограничение устанавливается на запрос, поэтому если клиент одновременно откроет два соединения, суммарная скорость будет вдвое выше заданного ограничения.

Ограничение скорости можно также задать в переменной $limit_rate. Это может быть полезно в случаях, когда скорость нужно ограничивать в зависимости от какого-либо условия:

server {

    if ($slow) {
        set $limit_rate 4k;
    }

    ...
}

Кроме того, ограничение скорости может быть задано в поле “X-Accel-Limit-Rate” заголовка ответа проксированного сервера. Эту возможность можно запретить с помощью директив proxy_ignore_headers и fastcgi_ignore_headers.

синтаксис: limit_rate_after размер;
умолчание:
limit_rate_after 0;
контекст: http, server, location, if в location

Эта директива появилась в версии 0.8.0.

Задаёт начальный объём данных, после передачи которого начинает ограничиваться скорость передачи ответа клиенту.

Пример:

location /flv/ {
    flv;
    limit_rate_after 500k;
    limit_rate       50k;
}

синтаксис: lingering_close off | on | always;
умолчание:
lingering_close on;
контекст: http, server, location

Эта директива появилась в версиях 1.1.0 и 1.0.6.

Управляет закрытием соединений с клиентами.

Со значением по умолчанию “on” nginx будет ждать и обрабатывать дополнительные данные, поступающие от клиента, перед полным закрытием соединения, но только если эвристика указывает на то, что клиент может ещё послать данные.

Со значением “always” nginx всегда будет ждать и обрабатывать дополнительные данные, поступающие от клиента.

Со значением “off” nginx не будет ждать поступления дополнительных данных и сразу же закроет соединение. Это нарушает протокол, поэтому не следует это использовать без нужды.

синтаксис: lingering_time время;
умолчание:
lingering_time 30s;
контекст: http, server, location

Если действует lingering_close, эта директива задаёт максимальное время, в течение которого nginx будет обрабатывать (читать и игнорировать) дополнительные данные, поступающие от клиента. По прошествии этого времени соединение будет закрыто, даже если будут ещё данные.

синтаксис: lingering_timeout время;
умолчание:
lingering_timeout 5s;
контекст: http, server, location

Если действует lingering_close, эта директива задаёт максимальное время ожидания поступления дополнительных данных от клиента. Если в течение этого времени данные не были получены, соединение закрывается. Иначе данные читаются и игнорируются, затем nginx снова ждёт поступления данных. Цикл “ждать-читать-игнорировать” повторяется, но не дольше чем задано директивой lingering_time.

синтаксис: listen адрес[:порт] [default_server] [setfib=число] [backlog=число] [rcvbuf=размер] [sndbuf=размер] [accept_filter=фильтр] [deferred] [bind] [ipv6only=on|off] [ssl] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
listen порт [default_server] [setfib=число] [backlog=число] [rcvbuf=размер] [sndbuf=размер] [accept_filter=фильтр] [deferred] [bind] [ipv6only=on|off] [ssl] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
listen unix:путь [default_server] [backlog=число] [rcvbuf=размер] [sndbuf=размер] [accept_filter=фильтр] [deferred] [bind] [ssl] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
умолчание:
listen *:80 | *:8000;
контекст: server

Задаёт адрес и порт для IP или путь для UNIX-сокета, на которых сервер будет принимать запросы. Можно указать только адрес или только порт. Кроме того, адрес может быть именем хоста, например:

listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;

IPv6-адреса (0.7.36) задаются в квадратных скобках:

listen [::]:8000;
listen [fe80::1];

UNIX-сокеты (0.8.21) задаются при помощи префикса “unix:”:

listen unix:/var/run/nginx.sock;

Если указан только адрес, то используется порт 80.

Если директива не указана, то используется либо *:80 (если nginx работает с привилегиями суперпользователя), либо *:8000.

Если у директивы есть параметр default_server, то сервер, в котором описана эта директива, будет сервером по умолчанию для указанной пары адрес:порт. Если же директив с параметром default_server нет, то сервером по умолчанию будет первый сервер, в котором описана пара адрес:порт.

До версии 0.8.21 этот параметр назывался просто default.

В директиве listen можно также указать несколько дополнительных параметров, специфичных для связанных с сокетами системных вызовов. Эти параметры можно задать в любой директиве listen, но только один раз для указанной пары адрес:порт.

До версии 0.8.21 их можно было указывать лишь в директиве listen совместно с параметром default.

setfib=число
этот параметр (0.8.44) задаёт таблицу маршрутизации, FIB (параметр SO_SETFIB) для слушающего сокета. В настоящий момент это работает только на FreeBSD.
backlog=число
задаёт параметр backlog в вызове listen(), который ограничивает максимальный размер очереди ожидающих приёма соединений. По умолчанию backlog устанавливается равным -1 для FreeBSD и Mac OS X, и 511 для других платформ.
rcvbuf=размер
задаёт размер буфера приёма (параметр SO_RCVBUF) для слушающего сокета.
sndbuf=размер
задаёт размер буфера передачи (параметр SO_SNDBUF) для слушающего сокета.
accept_filter=фильтр
задаёт название accept-фильтра (параметр SO_ACCEPTFILTER) для слушающего сокета, который включается для фильтрации входящих соединений перед передачей их в accept(). Работает только на FreeBSD и NetBSD 5.0+. Можно использовать два фильтра — dataready и httpready.
deferred
указывает использовать отложенный accept() (параметр TCP_DEFER_ACCEPT сокета) на Linux.
bind
указывает, что для данной пары адрес:порт нужно делать bind() отдельно. Дело в том, что если описаны несколько директив listen с одинаковым портом, но разными адресами, и одна из директив listen слушает на всех адресах для данного порта (*:порт), то nginx сделает bind() только на *:порт. Необходимо заметить, что в этом случае для определения адреса, на которой пришло соединение, делается системный вызов getsockname(). Если же используются параметры backlog, rcvbuf, sndbuf, accept_filter, deferred или so_keepalive, то для данной пары адрес:порт всегда делается отдельный вызов bind().
ipv6only=on|off
этот параметр (0.7.42) определяет (через параметр сокета IPV6_V6ONLY), будет ли слушающий на wildcard-адресе [::] IPv6-сокет принимать только IPv6-соединения, или же одновременно IPv6- и IPv4-соединения. По умолчанию параметр включён. Установить его можно только один раз на старте.
До версии 1.3.4, если этот параметр не был задан явно, то для сокета действовали настройки операционной системы.
ssl
этот параметр (0.7.14) не имеет отношения к связанным с сокетами системным вызовам, а позволяет указать, что все соединения, принимаемые на этом порту, должны работать в режиме SSL. Это позволяет задать компактную конфигурацию для сервера,