Как создать домен как “http://username.example.com” в веб-приложении J2EE?

Я - разработчик веб-приложения, просто новичок. Я разрабатываю маленькое веб-приложение J2EE (например, сервисное название было бы похоже на http://www.example.com). Это использует Tomcat Apache. Спецификация: Когда пользователь подпишется в веб-приложение, он получит пользовательский домен как

http://username.example.com

Как я могу выполнить это в своем веб-приложении. Я все еще разрабатываю приложение. я еще не разместил его.

11
задан Cœur 31 December 2016 в 06:16
поделиться

5 ответов

Вам нужно будет создать виртуальный хост для каждого поддомена в конфигурации Apache типа:


. ServerAdmin webmaster@subdomain1.example.com
DocumentRoot /www/subdomain1.example.com
Имя сервера subdomain1.example.com
ErrorLog logs/subdomain1.example.com-host.example.com-error_log
Журналы CustomLog/subdomain1.example.com-access_log обычно

Однако есть одна проблема. Если ваше решение требует создания папок, добавления виртуального хоста и перезагрузки apache, что не очень хорошо выглядит для меня. Как мне решить эту проблему:

  1. Создайте подстановочный виртуальный хост для "*.example.com", чтобы все запросы к поддоменам шли на этот виртуальный хост.
  2. Настройте правило перезаписи для перенаправления всех запросов на одну страницу, скажем index.jsp
  3. Напишите JSP страницу с именем хоста, на который пришел пользователь, ищите по нему URL перенаправления в хранилище, т.е. mysql db, и перенаправляете на него. Этот скрипт будет скриптом index.jsp на подстановочном хосте.

Если вы используете этот способ, вам нужно лишь один раз настроить вышеописанное, а затем добавить в хранилище поддомены, что кажется более гибким решением, чем создание подкаталогов и модификация конфигурации Apache.

4
ответ дан 3 December 2019 в 09:20
поделиться

Похоже, вы ищете виртуальных хозяев на Томкате. Тогда поддомены должны быть настроены в Tomcat:

http://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html

Веб-приложение управляет только той частью URL, которая начинается с корня контекста. Таким образом, если есть веб-приложение "www.mysite.com/", оно может обрабатывать запросы на "www.mysite.com/alice" или "www.mysite.com/bob", но оно не будет обрабатывать запросы на "alice.mysite.com/", если это не было сконфигурировано в Tomcat-сервере. Это означает, что для каждого нового пользователя, Tomcat должен быть настроен с новым субдоменом. Я думаю, что это нельзя сделать изнутри веб-приложения.

2
ответ дан 3 December 2019 в 09:20
поделиться

У вас есть две проблемы.

Сначала вам нужно, чтобы браузер пользователя распознал, где находится «username.mysite.com». Для этого требуется конфигурация DNS, обычно в форме "подстановочного знака CNAME". Обратите внимание, что dyndns.org предоставляет это в своем пакете Dynamic DNS Pro, если вы хотите контролировать себя на этапе тестирования.

Во-вторых, вам нужно будет указать Tomcat, чтобы он выводил пользователя из имени хоста и предоставлял отдельный сайт для каждого пользователя. Самый простой способ сделать это - это, скорее всего, использовать фильтр сервлета, который "пробует" имя хоста в URL-адресе и устанавливает свойства, необходимые для ваших jsp-страниц.

4
ответ дан 3 December 2019 в 09:20
поделиться

если вы работаете в Windows, отредактируйте файл \ windows \ system32 \ drivers \ etc \ hosts и добавьте такую ​​строку:

127.0.0.1  username.mysite.com

тогда, когда сервер запущен, вы можете открыть браузер и ввести:

http://username.mysite.com
http://username.mysite.com:8080

или что-то еще и посетите веб-сайт.

Для этого вам потребуются права администратора.

если вы работаете в Linux, вам нужно будет отредактировать / etc / hosts и сделать то же самое.

однако, когда вы развертываете, это больше касается настройки веб-сервера и DNS-сервера. поэтому, если вы хотите получить все возможности, вам следует установить DNS-сервер локально и использовать его в качестве сетевого сервера имен. это более сложная задача, и инструкции зависят от того, используете ли вы Linux или Windows, и какой веб-сервер вы используете.

тогда вам нужно написать немного кода в своем приложении, чтобы проверить переменные сервера, чтобы узнать, какой субдомен был использован, и выполнить обработку на его основе.

2
ответ дан 3 December 2019 в 09:20
поделиться

Вы можете создать виртуальный хост wildcard

<VirtualHost *:80>
    ServerName example.com
    ServerAlias *.example.com
</VirtualHost>

, а затем иметь дело с поддоменами внутри кода вашего приложения, используя что-то вроде HttpServletRequest#getRequestURL()

0
ответ дан 3 December 2019 в 09:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: