hoall.nginx-proxy
Роль nginx-proxy
Эта роль устанавливает nginx в качестве прокси-сервера. Настройки предназначены только для использования с https. Убедитесь, что вы настроили свой SSL-сертификат. Параметр dhparam будет заменен на новую сгенерированную версию. Генерация происходит во время установки. Роль также устанавливает некоторые полезные значения по умолчанию для прокси-серверов.
Уровень безопасности — современный согласно определению фонда Mozilla (см. их генератор для получения дополнительной информации https://mozilla.github.io/server-side-tls/ssl-config-generator/). Конфигурация должна подходить для большинства систем. Я создал шаблоны, используя Ubuntu 16.04. HSTS включен. Конфигурация получает оценку A+ от ssllabs.com.
Сайт по умолчанию сопоставлен с /. Я создал и использую эту роль, чтобы абстрагировать и защитить соединение с моим серверами Tomcat.
Если у вас есть улучшения, создайте запрос на внесение изменений.
Требования
SSL-сертификат и openssl (для dhparam). Если вы ищете хорошую роль, я рекомендую взглянуть на geerlingguy.certbot.
Переменные роли
ПРИМЕЧАНИЕ: переменные, которые нужно переопределить, написаны ЗАГЛАВНЫМИ БУКВАМИ.
Название | Значение по умолчанию | Описание |
---|---|---|
NP_SERVER_NAME |
NONE | 'Строка, содержащая имена, на которые сервер (и местоположение) должен слушать. Например: "example.com www.example.com"' |
NP_SSL_CERTIFICATE |
NONE | 'Путь к вашему SSL-сертификату (fullchain.pem). Например: /etc/letsencrypt/live/example.de/fullchain.pem' |
NP_SSL_CERTIFICATE_KEY |
NONE | 'Путь к вашему приватному ключу SSL-сертификата (privkey.pem). Например: /etc/letsencrypt/live/example.de/privkey.pem' |
NP_PROXY_PASS |
NONE | 'Путь к местоположению. Например: "http://127.0.0.1:8080/example/"' |
NP_REWRITE |
NONE | 'Правило переписывания для сайта. Например: "^/example(.*)$ $1 last"' |
np_worker_processes |
{{ ansible_processor_count }} | 'Количество рабочих процессов, которые должен использовать nginx. По умолчанию это один на ядро, определяется настройкой ansible.' |
np_worker_connections |
1024 | 'Количество соединений для каждого рабочего процесса (включая соединения с серверами на заднем плане). Имейте в виду, что браузер открывает более одного соединения для увеличения скорости.' |
np_keep_alive_timeout |
15 | 'Тайм-аут для неактивного клиентского соединения в секундах.' |
np_client_max_body_size |
10m | 'Устанавливает максимальный допустимый размер тела клиентского запроса, указанный в заголовке "Content-Length".' |
np_client_body_buffer_size |
10k | 'Устанавливает размер буфера для чтения тела клиентского запроса.' |
np_proxy_connect_timeout |
10 | 'Определяет тайм-аут для установления соединения с проксируемым сервером. Следует отметить, что этот тайм-аут обычно не должен превышать 75 секунд.' |
np_proxy_send_timeout |
10 | 'Устанавливает тайм-аут (в секундах) для передачи запроса на проксируемый сервер.' |
np_proxy_read_timeout |
10 | 'Определяет тайм-аут (в секундах) для чтения ответа от проксируемого сервера.' |
np_proxy_buffers |
"32 8k" | 'Устанавливает размер буфера, используемого для чтения первой части ответа, полученного от проксируемого сервера. Эта часть обычно содержит небольшой заголовок ответа. По умолчанию размер буфера равен одной странице памяти. Это либо 4K, либо 8K, в зависимости от платформы. Тем не менее, его можно сделать меньше.' |
Примечание: части этой документации взяты из официальной документации nginx (https://nginx.org/en/docs/). Исходные материалы и документация распространяются по лицензии, подобной лицензии BSD с двумя пунктами.
Измените переменные в соответствии с вашими потребностями.
Зависимости
Пример Playbook
- hosts: servers
roles:
- { role: hoall.nginx-proxy, NP_SERVER_NAME: "example.com www.example.com", NP_SSL_CERTIFICATE: /etc/letsencrypt/live/fullchain.pem, NP_SSL_CERTIFICATE_KEY: /etc/letsencrypt/live/privkey.pem }
Лицензия
BSD
Информация об авторе
Феликс Паетов fhmpaetow@fsfe.org
Installation, configuration and hardening of a nginx proxy with one website.
ansible-galaxy install hoall.nginx-proxy