假设我有许多网站,域名不同,,domain1.com
等domain2.com
。我在 wildfly 中为这些网站设置了正确的虚拟主机配置。正确的 DNS 条目也已到位。如何将这些域名的请求路由到 wildfly 的服务器?
我是否只需在端口 80 和 443 上运行 wildfly?有种感觉告诉我这不是一个好主意,因为默认情况下 wildfly 不会在这些端口上运行。要在这些端口上运行 wildfly,需要以特权用户身份绑定到这些端口,然后切换到非特权用户。这样做的麻烦和困难表明这是不对的。
我是否应该在 nginx 或 apache2 后面运行 wildfly?我的应用程序动态启动网站和虚拟主机配置。我可以将所有请求转发给 wildfly 并让它处理吗?
???
答案1
选项 1 是可行的,但正如您正确预测的那样,这不是首选方法。为了在端口 80 或 443 上运行,您需要一个特权用户,并且您直接将 Java 服务器公开给公众,这更容易陷入麻烦。
因此,启动 nginx,在那里定义域并配置upstream
反向proxy_pass
代理到您的 wildfly 实例。您可以免费获得负载平衡,您可以在 nginx 而不是 wildfly 上处理 ssl,整个设置更容易维护和扩展。您可以为每个域设置专用的 wildfly 集群并进行单独的upstream
定义,或者您可以从具有单独 webcontexts 的单个实例开始,例如
upstream jboss {
server 192.168.33.11:8080;
}
server {
listen 443;
server_name example.com;
location / {
proxy_pass http://jboss/webapp1;
}
}
server {
listen 443;
server_name otherdomain.com;
#pass the request to another .war dewployed on jboss
location / {
proxy_pass http://jboss/webapp2;
}
}
您可以找到更多信息nginx 网站