Конфигурация 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, который имеет конфигурация по умолчанию).