glassfish怎么设置网站虚拟主机的域名

  1. AutoCMS
  2. /
  3. 建站资讯
  4. /
  5. 网站
logo
伏军薇

网站  2026-08-25 01:00:02   92

glassfish怎么设置网站虚拟主机的域名

要搞定GlassFish上的虚拟主机域名,说白了就是让服务器根据你输入的网址,找到对应的应用。GlassFish里管这个叫virtual-server,你只需要把域名写到它的hosts属性里,然后让它绑到你的web应用上,就这么简单。

打开管理控制台,默认地址是`http://localhost:4848`,登录后依次点开“配置”、“server-config”、“HTTP服务”、“虚拟服务器”。你会看到已有的虚拟服务器列表,默认那个叫`server`,它绑定了本机的所有IP。如果你想给单独的域名建一个独立的虚拟服务器,点“新建”,给它起个ID,比如`mysite`,然后在“主机”那一栏填上你的域名,像`www.mysite.com`,注意不要加`http://`,也不要带端口。下面的“默认Web模块”选择你的应用名,这样访问这个域名时就直接落到这个应用了。保存后重启一下GlassFish,或者执行`restart-domain1`,域名就生效了。

如果你更喜欢命令行,用asadmin也不难。比如你要创建一个叫`mysite`的虚拟服务器,绑到`www.mysite.com`,默认应用是`myapp`,可以这样敲:

`asadmin create-virtual-server --hosts www.mysite.com --default-web-module myapp mysite`

命令跑完没有任何报错,说明建成了。这时候再去`list-virtual-servers`看看,确认一下有没有出现。注意,这个命令只是创建虚拟服务器,但HTTP listener默认会使用所有可用的虚拟服务器,所以一般情况下不用额外去关联。但如果你的应用部署之后通过域名访问还是404,那可能就是listener的问题,需要去检查`network-listener`的配置,确保它没有限制在某个虚拟服务器上。

还有种情况,就是你想手动改配置文件。那你就找到`domain.xml`,在``那边加一段。这段类似:

``

记得把`network-listeners`写成你实际用的监听器名称,默认是`http-listener-1`。改完保存,重启。这个文件一旦改错,GlassFish可能起不来,所以改之前最好备份一下。

再说几个容易踩坑的地方。域名解析必须提前做好,你总不能让服务器自己去猜IP吧。如果你有多个域名要指向同一个应用,那就在hosts属性里用逗号分隔,或者用通配符,比如`*.mysite.com`,这样所有子域名都能匹配到。但要注意通配符只能出现在最左边,你写成`*.com`是没人理的,那等于匹配所有顶级域名,不合理。另外,默认虚拟服务器最好留着,作为兜底,不然访问IP或未配置域名时会出现错误。

我遇到过一次奇怪的现象,配置完域名后,访问`http://www.mysite.com:8080`能打开,但用80端口就不行。那是因为GlassFish默认监听8080,想让80端口直接响应,你得改HTTP listener的端口,或者在前端做个反向代理。实际上生产环境里,很少有人让GlassFish直接暴露在公网上,通常用Nginx或者Apache转发过来,这样域名解析在Web服务器做,GlassFish只需要监听内网端口,配置反而更简单。

回到虚拟主机本身,还有一个细节需要注意:多个虚拟服务器匹配时,GlassFish按什么顺序找?它不像Apache那样按配置文件顺序,而是根据hosts的匹配规则来的,精确匹配优先于通配符。所以如果你有`www.mysite.com`和`*.mysite.com`两个虚拟服务器,访问`www.mysite.com`时,精确的那个会先处理。

最后,改完配置后,一定要确认你部署的Web应用上下文根路径是根路径`/`,或者你设置了`default-web-module`,不然访问域名时可能会看到默认页面,而不是你的应用。这个很多人容易忽略,以为域名绑了就万事大吉,实际上应用路径也得对得上。

这样一套下来,GlassFish的虚拟主机域名就配置好了。其实它本身并不复杂,复杂的是域名、端口、应用这些环节之间的配合。只要逻辑理清楚,按部就班做,你也能顺手搞定。