Конфигурация Nginx для нескольких доменов и одного приложения
У меня есть следующий сценарий:
Одно приложение, которое будет обслуживать несколько разных доменов на одном сервере и один контекст одного экземпляра Tomcat. (DNS всех доменов настроен и функционален)
То есть он мне нужен, когда браузер указывает на адрес:
domain1.example
>> перенаправить на >> http://127.0.0.1/websiteapp
domain2.example
>> перенаправить на >> http://127.0.0.1/websiteapp
domainn.com.br
>> перенаправить на >> http://127.0.0.1/websiteapp
В приложении он получает (через URL-адрес запроса) вызывающий домен, то есть это мой идентификатор клиента, и через домен я получаю информацию в базе данных и возвращаю настроенные представления этому клиенту.
Я настроил NGINX (минимальная конфигурация) следующим образом:
server {
listen 80;
server_name domain1.example domain2.example domainn.com.br;
root /opt/tomcat2/webapps/websites;
location / {
proxy_pass http://127.0.0.1:8080/websitesapp;
proxy_set_header Host $http_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;
}
}
Tomcat server.xml
<Context docBase="websitesapp" path="/" reloadable="true" source="org.eclipse.jst.jee.server:websitesapp"/>
В приложении я извлекаю домен и "монтирую" представление с информацией, загруженной из базы данных.
Это правильная настройка?
Есть ли какой-нибудь способ передать домен более безопасному tomcat, то есть без извлечения его по URL браузера?
Есть ли противопоказания к такому подходу?
Любой другой подход, который был бы более интересным?
1 ответ
За исключением server_name
эти server
блоки в остальном идентичны. Вместо этого вы можете использовать один server
блок с server_name
который перечисляет все три домена. Или двадцать, если вы расширите позже...
$http_host
Можно использовать, даже если браузер предоставил его, потому что он был проверен. Если оно не соответствует одному из имен в server_name
в одном из server
блоки, это не было бы использовано. (При условии, что у вас есть значение по умолчанию server
, который имеет конфигурация по умолчанию).