7.4. Конфигурация прокси для Tomcat
Для задач интеграции может потребоваться прокси-сервер. В этом разделе описывается конфигурация HTTP-сервера Nginx в качестве прокси для приложения на платформе CUBA.
Tip
|
Если вы настраиваете прокси, то не забудьте задать значение в параметре cuba.webAppUrl. |
- NGINX
-
Для Nginx предлагается 2 конфигурации проксирования, описанные ниже. Все примеры подготовлены и проверены на Ubuntu 16.04.
К примеру, ваше веб-приложение работает по ссылке http://localhost:8080/app
.
Tip
|
Кроме Nginx следует настроить еще и Tomcat. |
- Настройка Tomcat
-
Сначала добавьте в конфигурационный файл Tomcat
conf/server.xml
следующий код:<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" requestAttributesEnabled="true" internalProxies="127\.0\.0\.1" />
и перезапустите Tomcat:
sudo service tomcat8 restart
Это требуется для того, чтобы Tomcat мог обрабатывать заголовки от Nginx без модификации веб-приложения.
Затем установите Nginx:
sudo apt-get install nginx
Откройте в браузере ссылку
http://localhost
и убедитесь, что стартовая страница Nginx работает.Теперь вы можете удалить символьную ссылку на тестовый сайт Nginx:
rm /etc/nginx/sites-enabled/default
Далее сконфигурируйте прокси одной из выбранных схем:
- Прямое проксирование
-
В этом случае все запросы обрабатывает прокси, прозрачно перенаправляя их в приложение.
Создайте конфигурационный файл Nginx
/etc/nginx/sites-enabled/direct_proxy
:server { listen 80; server_name localhost; location /app/ { proxy_set_header Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Proto $scheme; # Required to send real client IP to application server proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; # Optional timeouts proxy_read_timeout 3600; proxy_connect_timeout 240; proxy_http_version 1.1; # Required for WebSocket: proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://127.0.0.1:8080/app/; } }
и перезапустите Nginx:
sudo service nginx restart
Вы можете открыть свой сайт по ссылке
http://localhost/app
.
- Проксирование с перенаправлением
-
В этом примере описано, как изменить путь к приложению в URL с
/app
на/
, как если бы приложение было развёрнуто в корневом контексте (аналог/ROOT
). Это позволит вам обращаться к приложению по адресуhttp://localhost
.Создайте конфигурационный файл Nginx
/etc/nginx/sites-enabled/direct_proxy
:server { listen 80; server_name localhost; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Proto $scheme; # Required to send real client IP to application server proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; # Optional timeouts proxy_read_timeout 3600; proxy_connect_timeout 240; proxy_http_version 1.1; # Required for WebSocket: proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://127.0.0.1:8080/app/; # Required for folder redirect proxy_cookie_path /app /; proxy_set_header Cookie $http_cookie; proxy_redirect http://localhost/app/ http://localhost/; } }
и перезапустите Nginx
sudo service nginx restart
Ваше приложение доступно по ссылке
http://localhost
.
Tip
|
Обратите внимание, что аналогичные инструкции развертывания прокси справедливы для конфигураций Jetty, WildFly и др. В таких случаях вам может понадобиться дополнительная конфигурация этих серверов. |