Как я могу перенаправить весь исходящий трафик с сервера Tomcat по шаблонам URL?
Пример: перенаправить все запросы от tomcat к
Это только для целей разработки на машине Windows. Я не хочу изменять свой хост-файл, потому что я все еще хочу получить доступ ко всему, как есть в моем браузере.
Есть ли способ настроить Tomcat таким образом?
редактировать: уточнение:
в настоящее время все службы работают на одном внутреннем сервере, но я хочу развернуть их на разных серверах. поэтому на основе URL-адреса после / я хочу направить его на другой сервер.
то есть:
Вы можете проксировать запрос перед tomcat, например, установить сервер apache на том же веб-сервере, на котором запущен tomcat (очевидно, на другом порту). Установите mod_proxy для apache и правильно перенаправьте на внешний или внутренний сервер.
вот пример конфигурации apache:
ProxyPass / мой сервис http: //a.backend.url: 8080 / my-service-a
ProxyPassReverse / my-service http: //a.backend.url: 8080 / my-service-a
Не забудьте правильно загрузить модуль в apache, вы можете обратиться к документации по поиску proxy-howto apache.
Используйте свойство, чтобы настроить, какой внутренний сервер использовать. Настройте tomcat на своем ноутбуке, чтобы использовать серверную часть разработки. Вы можете либо предоставить значение свойства по умолчанию с производственной базой данных, либо установить соответствующую внутреннюю часть на своем производственном сервере. Это дает вам большую гибкость при настройке промежуточных сред и сред тестирования производительности.
Если у вас несколько серверных служб, рассмотрите возможность использования свойства для каждой службы. Это дает возможность использовать одну службу для нескольких сред, а другие службы - по-разному. Он также позволяет масштабировать службы в случаях, когда нагрузка на службу требует одного или нескольких выделенных серверов.
Я установил балансировщик нагрузки (здесь nginx) локально на свой компьютер и указал на него как на backend-сервер.
Конфигурация выглядит так:
# This routes all traffic to the LB to a default backend server
location / {
proxy_pass http://my.backend.url:8080;
proxy_redirect http://my.backend.url:8080/ /;
proxy_read_timeout 60s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# This routes all traffic under "/my-service" to the different backend:
# a.backend.url:8080/my-service-a
location /my-service {
proxy_pass http://a.backend.url:8080/my-service-a
proxy_redirect http://a.backend.url:8080/my-service-a/ /;
proxy_read_timeout 60s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}