我有以下情况:
单个应用程序将在单个服务器上为多个不同的域提供服务,并且单个 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 服务器.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
,即默认配置所具有的)。