В этой статье мы настраиваем несколько доменов на tomcat и редиректим с 80 порта, на 8080 Tomcat сервера с помощью nginx.
Для настройки я использовал следующие ресурсы:
В папке tomcat7/conf находим server.xml
Настраиваем Tomcat
Удаляем
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- <Context path="" docBase="datr" debug="1"/> --> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> |
Добавляем вместо УДАЛЕННОГО
|
1 2 3 4 5 6 |
<Host name="m-tree.ru" appBase="webapps/mtree" unpackWARs="true" autoDeploy="true"> <Alias>www.m-tree.ru</Alias> </Host> <Host name="tresvir.ru" appBase="webapps/tresvir" unpackWARs="true" autoDeploy="true"> <Alias>www.tresvir.ru</Alias> </Host> |
Настраиваем файловую систему
После перезапуска сервера каталоги создадутся автоматически. Для деплоя в корень домена(http://www.tresvir.ru/) WAR называем ROOT, так же для удобства можно скопировать в обе папки manager который идет в комплекте с сервером.
На продакшене не рекомендую использовать сторонние приложения , лучше деплоить в ручную
NGINX config
Спустя год после написания этой заметки столкнулся с проблемой, при определении 80 порта в настройках Tomcat 9 постоянно получал SecketException 80
Выручила установка редиректа с помощью nginx.
Обратите внимание на поля ниже. Не стал разбираться какой из них, но пока их не добавил на всех доменах показывался домен по умолчанию
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection «upgrade»;
- proxy_set_header Host $http_host;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
server { listen 80; listen [::]:80; server_name recon24.ru www.recon24.ru; #root /opt/apache-tomcat-9.0.1/webapps/recon24; server_name_in_redirect on; access_log /var/log/nginx/tresvir_access.log; error_log /var/log/nginx/tresvir_error.log debug; location / { #proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:8080/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; } } server { listen 80; listen [::]:80; server_name tresvir.ru www.tresvir.ru; #root /opt/apache-tomcat-9.0.1/webapps/tresvir; server_name_in_redirect on; access_log /var/log/nginx/tresvir_access.log; error_log /var/log/nginx/tresvir_error.log debug; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:8080/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; } } |
Учим Tomcat видеть реальный IP
Для этого нужно настроить фильтры
Если вы используете Spring Boot просто добавьте в application.properties
1 server.use-forward-headers=true


