Всем привет!
Данная публикация является своего рода продолжением статьи об установке и настройке контура 1С-Apache по протоколу http. Вот этой: //infostart.ru/1c/articles/2096601/
Итак…
Для работы через защищенный протокол https буду использовать веб-сервер Nginx. Причем уже установленный Apache будет работать только внутри на локальном сетевом интерфейсе. Таким образом, пользователи будут напрямую обращаться не к Apache, а к Nginx, а он уже, в свою очередь, будет пробрасывать подключение к Apache.
- Ищу в репозитории Nginx
dnf list nginx
У меня нашлась 25-я версия. Устанавливаю
dnf install nginx.x86_64
После установки пробую запустить службу Nginx, но получаю ошибку
Причина в том, что уже установленный Apache работает на том же порту, что и запускаемый Nginx, а именно – 80-ый. Поэтому, чтобы запустить Nginx, нужно сперва остановить Apache.
Останавливаю Apache и запускаю Nginx
systemctl stop httpd.service
systemctl start nginx.service
Проверяю адрес опубликованной на Apache базы с помощью curl
curl http://srv-*****-linux/H*****K/
Получаю текст с ошибками Nginx в виде html - кричащая “NGINX ERROR!”
На всякий случай смотрю в конфигурационный файл Nginx и вижу там порт 80.
cat /etc/nginx/nginx.conf
- Чтобы настроить подключение через Nginx к Apache, нужно у Apache переопределить порт, так как на 80-ом запущу именно Nginx.
Открываю в редакторе конфигурационный файл Apache, нахожу строку «Listen 80» и меняю на «127.0.0.1:8080». Адрес 127.0.0.1 указывает, что Apache не будет работать извне, а только локально.
nano /etc/httpd/conf/httpd.conf
Сохраняю и выхожу из редактора.
- Настраиваю Nginx, добавив секцию перенаправления Nginx на адрес 127.0.0.1:8080, т.е. Apache. Открываю в редакторе конфигурационный файл Nginx
nano /etc/nginx/nginx.conf
Перед секцией страницы ошибок добавляю секцию перенаправления
location / {
proxy_pass http://127.0.0.1:8080;
}
Сохраняю и выхожу из редактора. Перезапускаю службу Nginx и запускаю службу Apache.
systemctl restart nginx.service
systemctl start httpd.service
Если теперь проверить адрес опубликованной на Apache базы с помощью curl
curl http://srv-*****-linux/H*****K/
то ошибки Nginx уже не будет
- Настраиваю https. Для этого для надежности останавливаю службы Nginx и Apache. Редактирую конфигурационный файл Nginx.
systemctl stop httpd.service
systemctl stop nginx.service
nano /etc/nginx/nginx.conf
Раскомментируем секцию, описывающую работу с https
и добавляю секцию для перенаправления
location / {
proxy_pass http://127.0.0.1:8080;
}
Помимо этого запоминаю пути к файлам сертификата, которые указаны в параметрах ssl_sertificate и ssl_certificate_key.
Создаю каталоги по этим путям
cd /etc/pki/
mkdir nginx
cd nginx
mkdir private
- Создаю и настраиваю файл для определения параметров создаваемых сертификата и ключа. Для этого создаю файл в папке pki и добавляю текст
cd /etc/pki/nginx/
touch ssl.conf
nano ssl.conf
По файлу с параметрами с помощью инструмента openssl создаю файлы сертификата и ключа
openssl req -new -newkey rsa:2048 -sha256 -nodes -x509 -days 3653 -config ssl.conf -extensions 'req_ext' -keyout server.key -out server.crt
При корректном создании система сообщает об этом
В каталоге /etc/pki/nginx/ должны появиться файлы сертификата и ключа. Файл ключа перемещаю в каталог /etc/pki/nginx/private, т.к. этот путь указан в конфигурационном файле Nginx
mv server.key /etc/pki/nginx/private/
- Запускаю Apache и Nginx. Заодно добавляю Nginx в автозагрузку
systemctl start httpd.service
systemctl enable nginx.service
systemctl start nginx.service
Готово.
7. Проверяю работу, забив в браузере страницу https://srv-*****-linux/H*****K/
ВАЖНО! По умолчанию с https работает порт 443, поэтому нужно убедиться, что он открыт.
На этом пока все. Надеюсь, что данный материал позволит кому-то сэкономить время.