Если «Подсказки» доступны для внешних пользователей интернета, вы наверняка захотите:
- включить HTTPS,
- кешировать статические файлы,
- сжимать ответы,
- журналировать запросы,
- настроить ограничение по количеству запросов с одного IP,
- закрыть часть сервисов (совсем или за basic-авторизацией).
Лучше всего использовать ПО, в котором отлично реализованы перечисленные функции — популярный веб-сервер nginx. Запросы в этом случае будут идти так:
nginx выступает как прокси, через который внешний мир взаимодействует с «Подсказками». Он терминирует HTTPS, проверяет доступ и лимиты, записывает запросы и выполняет другие типичные для веб-серверов функции. «Подсказки» же занимаются своим делом — подсказывают адреса, компании и другие полезные данные.
Скорее всего, ваша организация уже использует nginx, и администраторы знают, как его настроить. Если нет — поможет официальная документация. Пример базовой настройки (без HTTPS, кеширования, авторизации и тому подобного) — ниже.
Проксирование «Подсказок» через nginx
Исходим из того, что nginx работает на сервере Подсказок. Команды выполняются под рутом.
1. Установить nginx
yum install -y nginx
2. Отредактировать файл конфигурации /etc/nginx/nginx.conf. Вместо стандартного блока server { ... } установить такой:
server { listen 80 default_server; listen [::]:80 default_server; # uncomment for https support # listen 443 ssl; # listen [::]:443 ssl; server_name _; # uncomment for https support # IMPORTANT: you should issue certificate (public.pem and and private.pem) first # ssl_certificate /etc/nginx/ssl/public.pem; # ssl_certificate_key /etc/nginx/ssl/private.pem; location /suggestions/ { proxy_pass http://localhost:8080/suggestions/; proxy_http_version 1.1; proxy_set_header Connection ""; } }
3. Запустить nginx:
systemctl start nginx
4. Открыть в браузере «Подсказки» через nginx по адресу:
http://IP_СЕРВЕРА:80/suggestions/api/4_1/rs/status
5. Убедиться, что URL открылся без ошибок и в логе nginx (/var/log/nginx/access.log) добавилась запись о выполненном запросе.
6. Включить автозапуск nginx:
systemctl enable nginx