Любая инструкция является примерной,
и создана для того, чтобы показать основные команды и действия,
в связи с очень большим разнообразием linux-систем и windows-систем
Установка дополнительного ПО
Установку программного обеспечения должен выполнять технический специалист с базовыми знаниями и навыками администрирования систем Linux и Windows
Для работы Докзиллы через безопасный протокол HTTPS необходимо установить дополнительное ПО - "NGINX", для этого необходимо воспользоваться инструкцией с официального сайта https://nginx.org/ru/docs/install.html, или использовать примеры из нашей краткой инструкции
CentOS / Rocky Linux / Ред ОС
## устанавливаем
yum install nginx
## разрешаем автоматический запуск службы
systemctl enable nginx
## запускаем службу
systemctl start nginx
-----
Debian / Ubuntu / Astra Linux
## устанавливаем
apt-get install nginx
## разрешаем автоматический запуск службы
systemctl enable nginx
## запускаем службу
systemctl start nginx-----
Windows Server 2012 / 2016 / 2019 / 2022
Nginx для Windows скачивается на официальном сайте https://nginx.org/ru/download.html
Необходимо распаковать архив (например в c:\nginx) и запустить файл c:\nginx\nginx.exe
Конфигурация
Настройка везде одинаковая, необходимо создать файл конфигурации в директории conf, например doczilla.conf, и отредактировать его
## создание файла конфигурации на linux
touch /etc/nginx/conf.d/doczilla.conf
## редактирование файла конфигурации на linux
vi /etc/nginx/conf.d/doczilla.conf
## создание и редактирование файла конфигурации на windows
notepad.exe c:\nginx\conf\doczilla.confHTTP протокол
Для работы по HTTP протоколу, рекомендуем вот такое содержимое
server {
listen 80;
server_name _;
client_max_body_size 50m;
large_client_header_buffers 8 64k;
location / {
proxy_pass http://127.0.0.1:9080;
# Add WSS protocol (WebSocket)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}HTTPS протокол
Для работы по HTTPS протоколу, необходимо скопировать два сертификата (открытую часть cert.crt и закрытую часть cert.key) в папку /etc/nginx/ssl/ и вставить в файл конфига вот такое содержимое.
## перенаправление с HTTP на HTTPS
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
## подключение сертификатов и перенаправление на сайт Докзиллы
server {
listen 443 ssl;
server_name _;
ssl_certificate /etc/nginx/ssl/cert.crt;
ssl_certificate_key /etc/nginx/ssl/cert.key;
client_max_body_size 50m;
large_client_header_buffers 8 64k;
location / {
proxy_pass http://127.0.0.1:9080;
# Add WSS protocol (WebSocket)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}Балансировка
Nginx позволяет работать как балансировщик, для отказоустойчивости и разделения нагрузки между серверами. Рекомендуем настроить метод балансировки как на примере:
upstream doczilla {
# задаем балансировку
# ip_hash - перенаправление обязательно по входящему IP (для балансировки нагрузки)
ip_hash;
# при 3х ошибках в течении 30 сек. переход на следующий сервер
server 192.168.0.10:9080 max_fails=3 fail_timeout=30s;
server 192.168.0.11:9080 max_fails=3 fail_timeout=30s;
}
server {
...
location / {
proxy_pass http://doczilla;
...
}
}
После всех изменений конфигурации необходимо проверить конфиг, перечитать настройки или перезапустить службу
## проверить корректность настроек
nginx -t
## перечитать настройки не отключая пользователей
nginx -s reload
## перезапустить службу с отключением всех подключенных пользователей
systemctl restart nginx-----
Настройка брандмауэра/файрволла
Для работы сайта необходимо открыть нужный порт в файрволле
## для файрволла FIREWALLD
## просмотреть статус службы и открытых портов
firewall-cmd --list-all
## открываем порт 80/tcp HTTP
firewall-cmd --zone=public --add-port=80/tcp --permanent
## другой вариант открытия порта 80/tcp HTTP
firewall-cmd --zone=public --add-service=http --permanent
## открываем порт 443/tcp HTTPS
firewall-cmd --zone=public --add-service=https --permanent
## перезапустить для применения изменений
firewall-cmd --reload## для файрволла UFW
## просмотреть статус службы и открытых портов
ufw status
## открываем порт 80/tcp HTTP
ufw allow 80
## другой вариант открытия порта 80/tcp HTTP
ufw allow http
## открываем порт 443/tcp HTTPS
ufw allow https
## для файрволла WINDOWS
## открываем порт 80/tcp HTTP
netsh advfirewall firewall add rule name="Web Port 80" dir=in action=allow protocol=TCP localport=80
## открываем порт 443/tcp HTTPS
netsh advfirewall firewall add rule name="Web Port 443" dir=in action=allow protocol=TCP localport=443Дополнительные настройки
Увеличение в конфиге doczilla.conf таймаута ответа сервера до 300 секунд, по умолчанию 60
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;так же в файле ./conf/server.properties необходимо добавить параметр
application.server.request.timeout=300Увеличение в конфиге Nginx размера загружаемого файла до 50Mb (по умолчанию 1Мb) / Ошибка Nginx 413 Payload Too Large
client_max_body_size 50M;так же в файле ./conf/server.properties необходимо добавить параметр
web.server.upload.max=50Указание на конкретный докер контейнер через переменную
server_name _;
set $name thebest;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://$name:9080;
}Конвертирование сертификата PFX для Nginx в формате Base 64, с разделением на открытый и закрытый сертификаты
## выгружаем из контейнера закрытый ключ с паролем
openssl pkcs12 -in ./cert.pfx -nocerts -out ./temp.key
## ввести пароль от контейнера и дважды любую парольную фразу
Enter Import Password:
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
## переводим ключ в RSA формат без пароля
openssl rsa -in ./temp.key -out ./cert.key
## ввести парольную фразу
Enter pass phrase for ./temp.key:
## выгружаем из контейнера открытый сертификат
openssl pkcs12 -in ./cert.pfx -clcerts -nokeys -out ./cert.crt
## ввести пароль от контейнера
Enter Import Password:Возможные ошибки
nginx: [emerg] 727#727: SSL_CTX_load_verify_locations("/etc/nginx/ssl/cert.cer") failed (SSL: error:0B084088:x509 certificate routines:X509_load_cert_crl_file:no certificate or crl found)
Необходимо пересохранить сертификат из кодировки DER в кодировку Base-64
Windows: запустить сертификат - вкладка 'Состав' - 'Копировать в файл' - 'Далее' - 'Файлы X.509 в кодировке Base-64' - 'Далее' - написать Имя файла - 'Далее' - 'Готово'
Linux: выполнить команды
openssl x509 -inform DER -in cert.сer -out public.crt
openssl rsa -inform DER -in privkey.key -out private.key
-----
connect() to [::1]:80 failed (13: Permission denied) while connecting to upstream
Необходимо перевести Selinux в режим разрешения и наблюдения Permissive
## просмотреть режимы работы Selinux
getenforce
## установить разрешающий режим Permissive
setenforce 0Для того, чтобы применился режим и после перезагрузки сервера, необходимо изменить конфиг
nano /etc/selinux/config
## отредактировать строку, указав режим наблюдения
SELINUX=permissive-----
Error 400 Request Header Or Cookie Too Large
Ошибка при большой длине заголовка тикета Kerberos (например, у пользователя очень много доменных групп), необходимо в конфиге Nginx в разделе server увеличить буфер:
и в конфиге server.properties добавить новые параметры
-----
Error 413 Payload Too Large
Ошибка при большой длине передаваемых данных, необходимо в конфиге Nginx в разделе server увеличить размер:
-----
nginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_image_filter_module.so" version 1014001 instead of 1024000 in /usr/share/nginx/modules/mod-http-image-filter.conf:1