Назад | Перейти на главную страницу

Как перенаправить с одного порта на другой?

У меня есть домен, в котором я запускаю два разных веб-приложения на разных портах.

Требование состоит в том, что если пользователь пытается получить доступ к корневому каталогу example: 8888 или example: 8080, он должен быть перенаправлен на example: 8888 / foo.

Как я могу выполнить это требование?

Вы можете добавить порт в перенаправление (или в любой URL-адрес), добавив двоеточие, и вы можете сопоставить корень сайта, используя регулярные выражения в RewriteRule.

RewriteRule ^/$ http://example.com:8888/foo [R]

Внутри файла .htaccess нет начальных слэшей, поэтому было бы более уместно:

RewriteRule ^$ http://example.com:8888/foo [R]

Я бы поставил приложение JAVA с помощью mod_proxy или mod_proxy_ajp. Позднее в случае а.) Это tomcat (совместимый сервер приложений) и б.) У вас есть доступ к конфигурации сервера приложений.

NameVirtualHost *:8888
Listen 8888

<VirtualHost *>
   ServerName example
   ServerAdmin you@the.re

   <Location />
     <IfModule mod_proxy.c>
       ProxyPass http://example:8888/foo
       ProxyPassReverse http://example:8888/foo
     </IfModule>
   </Location>

 ...
</VirtualHost>

Вы должны позаботиться о том, чтобы ваш сервер (Apache) не передавал запросы прокси. В большинстве дистрибутивов это значение установлено по умолчанию, но проверьте его еще раз. Документ Apache - ваш друг: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

Порт 8080 - другое дело, поскольку он обслуживается самим сервером приложений. Если вы хотите, чтобы он также обрабатывался Apache, вам следует деактивировать Catalina (веб-сервер Tomcat) и настроить его для обслуживания через AJP.