Инструкции
31.07.2020

Настройка веб-сервера Nginx

План работ:

  1. Установка Nginx под Linux.
  2. Выпуск самоподписанного сертификата (необязательно).
  3. Привязка сертификата.
  4. Проверка публикации.

Для развертывания клиентской транслирующей части необходимо взять отдельный сервер под управлением семейства операционных систем Linux. Nginx также существует для Windows, но в нем не реализована поддержка в виде службы, что не подходит под условия данной статьи.

1. Установка Nginx под Linux

Итак, предполагается, что есть только что установленная операционная система Ubuntu 18.04 LTS без графического интерфейса пользователя.

Перед тем как продолжить, нужно проверить доступные версии программного обеспечения дистрибутива. Выполняем команду:

Копировать в буфер обмена
sudo apt update

В выводе результата команды можно увидеть, что доступны обновления. Рекомендуются их обновить с помощью команды (подсказка "Run ‘apt list –upgradable’"):

Копировать в буфер обмена
sudo apt upgrade

По завершению обновления пакетов приложений можно приступить к установке непосредственно веб-сервера.

Нужно выполнить команду команду:

Копировать в буфер обмена
sudo apt install nginx

Необходимо дождаться окончание выполнения команды и убедиться, что в момент установки никаких ошибок не возникло. В данном случае установка прошла без проблем.

Далее нужно проверить, что помимо самой установки, веб-сервер запустился и готов обрабатывать запросы (для данной команды использование sudo не обязательно):

Копировать в буфер обмена
service nginx status

В ответ можно увидеть, что состояние службы active (running). Это значит, что веб-сервер работает в штатном режиме, и можно переходить к настройке трансляции запросов либо к генерации самоподписанного сертификата (если в этом есть необходимость).

2. Выпуск самоподписанного сертификата (необязательно)

После установки Nginx в операционной системе уже должен быть установлен openssl. Поэтому можно сразу приступить к генерации сертификата.

Первоначально нужно перейти в директорию хранилища сертификатов с помощью команды:

Копировать в буфер обмена
cd /etc/ssl/certs

После чего требуется ввести команду генерации сертификата, где вместо <SERVER> нужно подставить имя компьютера, на котором планируется размещен Apache:

Копировать в буфер обмена
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout <SERVER>.key -out <SERVER>.crt

Во время выполнения команды будет задано несколько вопросов. Для "Common Name (e.g. server FQDN or Your bane)" нужно также указать имя сервера. Остальные поля заполняются произвольно (кроме "Country name" - здесь можно оставить по умолчанию).

3. Привязка сертификата и переадресация запросов

После того как сертификаты были получены и размещены в директорию сертификатов, нужно перейти в директорию публикаций сайтов Nginx:

Копировать в буфер обмена
cd /etc/nginx

Предполагается, что уже есть две базы опубликованные на веб-серверах с Apache и IIS (см. Настройка веб-сервера IIS и 3. Установка Apache под Linux). 

Веб-сервер Apache расположен на компьютере <ИМЯ СЕРВЕРА APACHE>, а веб-сервер IIS расположен на компьютере <ИМЯ СЕРВЕРА IIS>

На веб-сервере Apache опубликована информационная база с именем <ИМЯ ПУБЛИКАЦИИ APACHE>, а на веб-сервере IIS опубликована информационная база с именем <ИМЯ ПУБЛИКАЦИИ IIS>.

С помощью любого удобного редактора нужно отредактировать файл nginx.conf и добавить в секцию http после комментария "# SSL Settings" (предварительно удалив все параметры в этой секции) следующий текст настройки:

Копировать в буфер обмена
server {
            listen                    443 ssl;
            server_name               _;
            keepalive_timeout         70;
            ssl_certificate           /etc/ssl/certs/server2.crt;
            ssl_certificate_key       /etc/ssl/certs/server2.key;
            ssl_protocols             TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
            ssl_ciphers               HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers on;
 

            location /<ИМЯ ПУБЛИКАЦИИ APACHE>/ {
                proxy_pass http://<ИМЯ СЕРВЕРА APACHE>/<ИМЯ ПУБЛИКАЦИИ APACHE>/;
                proxy_redirect off;
                proxy_set_header Host $host;
 

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Proto https;
           }
 

           location /<ИМЯ ПУБЛИКАЦИИ IIS>/ {
                proxy_pass http://<ИМЯ СЕРВЕРА IIS>/<ИМЯ ПУБЛИКАЦИИ IIS>/;
                proxy_redirect off;
                proxy_set_header Host $host;
 

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_heade X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Proto https;
           }
        }

После этого нужно сохранить и перезапустить службу nginx.

Копировать в буфер обмена
sudo service nginx restart

4. Проверка публикации

Для проверки корректной работы нужно открыть страницу в браузере и перейти по ссылке, которая состоит из двух частей:

Для таких параметров ссылка будет иметь вид:

https://server2/test_1c_iis

https://server2/test_1c_apache