nginx

Ansible Роль: Nginx

Статус сборки

Устанавливает Nginx на серверах RedHat/CentOS, Debian/Ubuntu, Archlinux, FreeBSD или OpenBSD.

Эта роль устанавливает и настраивает последнюю версию Nginx из репозитория Nginx yum (на системах на базе RedHat), apt (на системах на базе Debian), pacman (Archlinux), pkgng (на системах FreeBSD) или pkg_add (на системах OpenBSD). После установки Nginx вам, вероятно, потребуется выполнить дополнительные настройки, такие как добавление вашего собственного файла [virtualhost].conf в /etc/nginx/conf.d/, описывающего местоположение и параметры для вашего конкретного веб-сайта.

Требования

Нет.

Переменные роли

Доступные переменные перечислены ниже с значениями по умолчанию (см. defaults/main.yml):

nginx_vhosts: []

Список определений виртуальных хостов (серверных блоков) для Nginx. Каждая запись создаст отдельный конфигурационный файл с именем server_name. Если список пуст, вам нужно будет предоставить свою конфигурацию виртуального хоста. Посмотрите закомментированный пример в defaults/main.yml для доступных параметров сервера. Если у вас много настроек, требуемых для определения вашего сервера, лучше управлять конфигурацией виртуального хоста самостоятельно, оставив эту переменную установленной на [].

nginx_vhosts:
  - listen: "443 ssl http2"
    server_name: "example.com"
    server_name_redirect: "www.example.com"
    root: "/var/www/example.com"
    index: "index.php index.html index.htm"
    error_page: ""
    access_log: ""
    error_log: ""
    state: "present"
    template: "{{ nginx_vhost_template }}"
    filename: "example.com.conf"
    extra_parameters: |
      location ~ \.php$ {
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass unix:/var/run/php5-fpm.sock;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
      }
      ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
      ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
      ssl_protocols       TLSv1.1 TLSv1.2;
      ssl_ciphers         HIGH:!aNULL:!MD5;

Пример полностью заполненной записи nginx_vhosts с использованием | для объявления блока синтаксиса для extra_parameters.

Обратите внимание на отступы в блоке выше. Первая строка должна иметь обычный отступ в 2 пробела. Все остальные строки должны быть отступлены относительно этой строки. В сгенерированном файле весь блок будет иметь отступ в 4 пробела. Этот стиль обеспечит правильное форматирование конфигурационного файла.

  - listen: "80"
    server_name: "example.com www.example.com"
    return: "301 https://example.com$request_uri"
    filename: "example.com.80.conf"

Пример второго виртуального хоста, который перенаправит на первый.

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

nginx_remove_default_vhost: false

Удалять ли конфигурацию 'default' виртуального хоста, предустановленную Nginx. Полезно, если вы хотите, чтобы базовый URL / был направлен на один из ваших собственных виртуальных хостов, настроенных в отдельном .conf файле.

nginx_upstreams: []

Если вы настраиваете Nginx как балансировщик нагрузки, вы можете определить один или несколько наборов upstream с помощью этой переменной. Кроме того, необходимо настроить один из ваших серверных блоков для проксирования запросов через определенный upstream (например, proxy_pass http://myapp1;). См. закомментированный пример в defaults/main.yml для получения дополнительной информации.

nginx_user: "nginx"

Пользователь, под которым будет работать Nginx. По умолчанию это nginx для RedHat, www-data для Debian и www на FreeBSD и OpenBSD.

nginx_worker_processes: "{{ ansible_processor_vcpus|default(ansible_processor_count) }}"
nginx_worker_connections: "1024"
nginx_multi_accept: "off"

nginx_worker_processes должен быть установлен в количество ядер на вашем компьютере (если значение по умолчанию неверно, найдите это число с помощью grep processor /proc/cpuinfo | wc -l). nginx_worker_connections - это количество соединений на процесс. Увеличьте значение, чтобы справляться с большим количеством одновременных соединений (учтите, что соединение будет использовано на время, равное максимальному времени ожидания для каждого клиента!). Вы можете установить nginx_multi_accept в on, если хотите, чтобы Nginx принимал все соединения сразу.

nginx_error_log: "/var/log/nginx/error.log warn"
nginx_access_log: "/var/log/nginx/access.log main buffer=16k"

Конфигурация журналов ошибок и доступа по умолчанию. Установите в off, чтобы полностью отключить журнал.

nginx_sendfile: "on"
nginx_tcp_nopush: "on"
nginx_tcp_nodelay: "on"

Параметры TCP соединения. См. этот блог для получения дополнительной информации об этих директивах.

nginx_keepalive_timeout: "65"
nginx_keepalive_requests: "100"

Настройки держателя соединения Nginx. Тайм-аут должен быть установлен выше (более 10 секунд), если у вас есть более активный трафик (особенно сайты на AJAX), или ниже (менее 10 секунд), если на вашем сайте пользователи обычно посещают несколько страниц и не отправляют больше запросов.

nginx_server_tokens: "on"

Настройки server_tokens Nginx. Управляет тем, будет ли Nginx отвечать с указанием своей версии в HTTP заголовках. Установите на "off", чтобы отключить.

nginx_client_max_body_size: "64m"

Это значение определяет максимальный размер файла, который можно загрузить, так как загрузки проходят через Nginx перед попаданием на бэкенд, такой как php-fpm. Если вы получаете ошибку вроде клиент намеревался отправить слишком большой объект, это означает, что это значение установлено слишком низко.

nginx_server_names_hash_bucket_size: "64"

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

nginx_proxy_cache_path: ""

Установить как директиву proxy_cache_path в файле nginx.conf. По умолчанию это не будет настроено (если оставлено пустым), но если вы хотите использовать Nginx в качестве обратного прокси, вы можете установить это значение (например, "/var/cache/nginx keys_zone=cache:32m"), чтобы использовать кэш Nginx (дальнейшая настройка прокси может быть выполнена в отдельных конфигурациях сервера).

nginx_extra_http_options: ""

Дополнительные строки, которые будут вставлены в блок http верхнего уровня в nginx.conf. Значение должно быть указано буквально (как вы бы вставили это непосредственно в nginx.conf, соблюдая синтаксис конфигурации Nginx - такие как ; для завершения строки и т. д.), например:

nginx_extra_http_options: |
  proxy_buffering    off;
  proxy_set_header   X-Real-IP $remote_addr;
  proxy_set_header   X-Scheme $scheme;
  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header   Host $http_host;

См. шаблон в templates/nginx.conf.j2 для получения дополнительных сведений о размещении.

nginx_extra_conf_options: ""

Дополнительные строки, которые будут вставлены в верхнюю часть nginx.conf. Значение должно быть указано буквально (как вы бы вставили это непосредственно в nginx.conf, соблюдая синтаксис конфигурации Nginx - такие как ; для завершения строки и т. д.), например:

nginx_extra_conf_options: |
  worker_rlimit_nofile 8192;

См. шаблон в templates/nginx.conf.j2 для получения дополнительных сведений о размещении.

nginx_log_format: |
  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"'

Настраивает log_format для Nginx.

nginx_default_release: ""

(Только для Debian/Ubuntu) Позволяет вам установить другой репозиторий для установки Nginx. Например, если вы используете Debian на версии wheezy и хотите получить более новую версию Nginx, вы можете установить репозиторий wheezy-backports и указать это значение здесь, и Ansible будет использовать это как опцию -t при установке Nginx.

nginx_ppa_use: false
nginx_ppa_version: stable

(Только для Ubuntu) Позволяет использовать официальный PPA Nginx вместо системного пакета. Вы можете установить версию на stable или development.

nginx_yum_repo_enabled: true

(Только для RedHat/CentOS) Установите это значение на false, чтобы отключить установку репозитория nginx yum. Это может быть необходимо, если вы хотите стабильные пакеты операционной системы по умолчанию или если вы используете Satellite.

Переопределение шаблонов конфигурации

Если вы не можете настроить через переменные, потому что опция не раскрыта, вы можете переопределить шаблон, используемый для генерации конфигурационных файлов виртуальных хостов или файла nginx.conf.

nginx_conf_template: "nginx.conf.j2"
nginx_vhost_template: "vhost.j2"

При необходимости вы также можете установить шаблон для каждого виртуального хоста.

nginx_vhosts:
  - listen: "80 default_server"
    server_name: "site1.example.com"
    root: "/var/www/site1.example.com"
    index: "index.php index.html index.htm"
    template: "{{ playbook_dir }}/templates/site1.example.com.vhost.j2"
  - server_name: "site2.example.com"
    root: "/var/www/site2.example.com"
    index: "index.php index.html index.htm"
    template: "{{ playbook_dir }}/templates/site2.example.com.vhost.j2"

Вы можете скопировать и изменить предоставленный шаблон или расширить его с помощью наследования шаблонов Jinja2 и переопределить конкретный блок шаблона, который необходимо изменить.

Пример: Настройка gzip в конфигурации nginx

Установите nginx_conf_template так, чтобы он указывал на файл шаблона в директории вашего плейбука.

nginx_conf_template: "{{ playbook_dir }}/templates/nginx.conf.j2"

Создайте дочерний шаблон в указанном вами пути и расширьте файл шаблона geerlingguy.nginx относительно вашего playbook.yml.

{% extends 'roles/geerlingguy.nginx/templates/nginx.conf.j2' %}

{% block http_gzip %}
    gzip on;
    gzip_proxied any;
    gzip_static on;
    gzip_http_version 1.0;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;
    gzip_comp_level 6;
    gzip_types
        text/plain
        text/css
        text/xml
        text/javascript
        application/javascript
        application/x-javascript
        application/json
        application/xml
        application/xml+rss
        application/xhtml+xml
        application/x-font-ttf
        application/x-font-opentype
        image/svg+xml
        image/x-icon;
    gzip_buffers 16 8k;
    gzip_min_length 512;
{% endblock %}

Зависимости

Отсутствуют.

Пример плейбука

- hosts: server
  roles:
    - { role: geerlingguy.nginx }

Лицензия

MIT / BSD

Информация об авторе

Эта роль была создана в 2014 году Джеффом Гирлингом, автором Ansible for DevOps.

О проекте

Nginx installation for Linux, FreeBSD and OpenBSD.

Установить
ansible-galaxy install gortc/ansible-role-nginx
Лицензия
mit
Загрузки
83
Владелец
Archived, please use @pion (was WebRTC stack in go)