Java中通过Tomcat服务器配置虚似主机以及对域名和服务器的理解
一、配置虚拟主机
1、配置虚拟主机
配置虚似主机就是配置一个网站。
在Tomcat服务器配置一个虚拟主机(网站),需要修改conf文件夹下的server.xml这个配置文件,使用Host元素进行配置,打开server.xml,可以看到Tomcat服务器自带的一个名称为localhost的虚拟主机(网站),如下图所示:
平时我们将开发好的JavaWeb应用放到webapps文件夹下,然后就可以使用”http://localhost:端口号/JavaWebAppName”的方式去访问了,其实访问的就是name是”localhost”的那台虚拟主机(Host),这台虚拟主机管理webapps文件夹下的所有web应用。
例如:http://localhost:8080/JavaWebDemoProject/1.jsp,这个URL地址访问的就是名称是localhost的那台虚拟主机下的JavaWebDemoProject这个应用里面的1.jsp这个web资源。
我们可以使用如下的方式配置一个虚拟主机,例如:
这里我们新配置一个虚拟主机,虚拟主机的name是”www.gacl.cn”,虚拟主机”www.gacl.cn”现在管理着JavaWebApps文件夹下的所有web应用,平时我们在互联网上使用域名”www.baidu.com”访问百度的网站时,其实就是在访问一个名称是”www.baidu.com”的虚拟主机,所以当我们要访问name是”www.gacl.cn”的这个虚拟主机时,就可以使用”域名(www.gacl.cn)”去访问,注意一下appBase=”F:\JavaWebApps”,这里的JavaWebApps文件夹代表的不是一个项目的根目录,而是一个存放了一个或者多个JavaWeb应用的文件夹,如下图所示:
就好像是Tomcat服务器的webapps文件夹一样,里面存放了很多的JavaWeb应用。
二、windows系统中注册域名
配置的主机(网站)要想通过域名被外部访问,必须在DNS服务器或windows系统中注册访问网站时使用的域名,找到”C:\Windows\System32\drivers\etc”目录下的hosts文件,如下图所示:
编辑这个文件,将新添加的网站的域名和IP地址绑定在一起,这样我们就可以在浏览器中使用www.gacl.cn这个域名去访问name是www.gacl.cn那个虚拟主机里面管理的那些web应用了。
DNS : Domain Name Service 域名解析服务,就是将域名与IP进行映射的服务。而提供这种服务的服务器,称为DNS服务器。
我们通过域名localhost可以访问本机,是因为我们Windows系统本身也充当当前DNS服务器的角色。
使用浏览器通过域名”www.gacl.cn”访问”www.gacl.cn”这个虚拟主机下的JavaWebDemo1这个web应用下的1.jsp这个web资源,”www.gacl.cn”这个虚拟主机开放了一个8080端口,用户只能通过这个8080端口去访问JavaWebDemo1这个web应用下的1.jsp这个web资源。
三、网站由哪些部分组成?
一个完整的网站一般由域名(俗称网址或域名)、空间、网站内容组成,然后才能组成的运行。
1、域名:就是一个有字母和数字组成的地址,在浏览器中地址栏输入后就能够访问网站,如www.qunjianzhan.com,这就是一个网址,也就是注册的域名。域名是有时效性的,域名到期后需要续费。不续费,域名不在属于你的了,别人可以再次注册。
每个网站都有一个唯一的域名,大家熟知的百度(baidu.com)、淘宝(taobao.com)这些网址都不陌生吧,网址都是不一样的。
2、空间:空间就是在网上的一个存储网站内容的地方,也叫虚拟主机。也就是存放网站程序的虚拟空间或服务器,用于存储网站程序及资料,并提供网站程序运行所需要的环境,通过域名访问网站的时候就是远程链接到这网站空间获取储存在这里面的网站程序内容。
3、网站内容:网站内容一般由展示界面、程序和资料组成,界面就是肉眼能够直观了解网站的页面,所有的页面都是由程序来支撑的,在加上与网站相关的资料,组成了一个完整的网站内容。
四、困惑解析:
1、对于www.baidu.com,baidu.com是域名。我们通过域名可以访问百度这个网站。即我们输入baidu.com,浏览器会自动给我们添加上 https://www.baidu.com/
因此,我们访问百度这个网站,是通过网址https://www.baidu.com 来访问的。当我们输入域名baidu.com 浏览器会自动帮我们补充完整的访问地址 https://www.baidu.com/
注意:后面的/不能少,表示是根目录。
2、对于本篇博文中的Tomcat服务器配置虚似主机:
http://www.gacl.cn:8080/JavaWebDemo1/1.jsp
http://www.gacl.cn:8080/JavaWebDemo1/1.html
1.访问这个网站的网址是:http://www.gacl.cn:8080/JavaWebDemo1/1.jsp
http://www.gacl.cn:8080/JavaWebDemo1/1.html
1.jsp和1.html只不过是这个网站的某一网页的内容
2.www.gacl.cn是域名,同时也是新配置的虚拟主机。
3.8080/JavaWebDemo1/1.html是网站内容
4.对于端口8080,是因为server.xml中的连接器Connector:
< Connector port=”8080” protocol=”HTTP/1.1”
connectionTimeout=”20000”
redirectPort=”8443” />
如果我们将8080改成80,访问地址写成:
http://www.gacl.cn/JavaWebDemo1/1.jsp
跟上面是相同的结果。这是因为浏览器默认的端口号是80,因此,我们如果在server.xml中将端口号改为80,那么浏览器中因为已经是默认80了,不用再写了。
3、注意,有时,虚拟主机和域名的名称是不一样的。
如:
http://mail.163.com/index.html
1)http://: 这个是协议,也就是HTTP超文本传输协议,也就是网页在网上传输的协议。
2)mail:这个是服务器名,代表着是一个邮箱服务器,所以是mail.
3)163.com:这个是域名,是用来定位网站的独一无二的名字。
4)mail.163.com:这个是网站名,由服务器名+域名组成。
5) /:这个是根目录,也就是说,通过网站名找到服务器,然后在服务器存放网页的根目录
6) index.html:这个是根目录下的默认网页(当然,163的默认网页是不是这个我不知道,只是大部分的默认网页,都是index.html)
7)http://mail.163.com/index.html:这个叫做URL,统一资源定位符,全球性地址,用于定位网上的资源。
五、小结
我们拿网易的域名来说,网易的域名是 163.com
1、当我们输入163.com 系统会自动补充为 http://www.163.com/
www.163.com是什么呢?
从整体上来说,这是一个URL地址,而非域名。细化来讲,www是一个主机名称,在这台主机上运行着网页服务器,当客户端输入 www.163.com时,系统会在DNS系统上查询这个地址所对应的IP地址,如果一切正常则会很快返回这台主机的IP地址,之后浏览器会向这个地址发起HTTP请求进行网页解析。
2、对于:
www.163.com
mobile.163.com
news.163.com
mail.163.com
1.严格来说,www.xxx.com这是大家公认的顶级域名,www是万维网的英文简称,是一个服务器。
而当www.163.com,我们可以说这是一个顶级域名。当去掉www,我们也可以说这是个域名,它的服务器是www。对于这个,很多人的理解不一样。
2.去掉www,前面没有点.的就是顶级域名,如此时163.com就是一个顶级域名。事实上,我们现在访问百度网站、网易网站,都是输入baidu.com 163.com 都去掉了www,这些去掉www使得访问更简便,也使得这个域名排名更高。具体情况百度一下。
3.对于mobile.163.com news.163.com mail.163.com 我们就说这是二级域名。
4.对于上面所说的mail.163.com:这个是网站名,由服务器名+域名组成。
我们理解为:
(1)整体上,mail.163.com就是一个二级域名。它的服务器是mail.163.com,即它的虚拟空间或虚拟主机是mail.163.com
(2)广义上,163.com是一个顶级域名(在去掉www的前提下),mail是服务器,或称虚拟空间,或称虚拟主机。mail.163.com:这个是网站名,由服务器名+域名组成。
(3)又因为,网站一般由域名、空间、网站内容组成。所以在这里,当我们按(1)的情况来理解,那么我们想要访问这个mail的网易网站,我们肯定要输入域名、空间、网站内容。而这样做很是不方便,这时域名就派上用场了。我们不是可以通过域名快速访问到这个网站吗?于是,我们在浏览器地址上输入mail.163.com这个域名,此时,浏览器会自动补充上https://和/
http://: 这个是HTTP超文本传输协议 /表示根目录
因此这个完整的网站的访问网址是http://mail.163.com/
好了,一种理解:域名是mail.163.com 空间是mail.163.com 网站内容是我们输入这个网址打开看到的界面内容
另一种理解:域名是163.com 空间是163.com 网站内容是我们输入这个网址打开看到的界面内容
3、好了,拿本篇博文Tomcat配置的虚拟机来说,
http://www.gacl.cn:8080/JavaWebDemo1/1.jsp
这里的www是跟gacl.cn一起的,不是什么www服务器了,此www非彼此www。在我们这里,因为我们在将域名和本机的IP地址绑定的时候,域名的名称就是www.gacl.cn。
因此,对于这个网址,www.gacl.cn既是域名,也是服务器(虚拟主机),8080/JavaWebDemo1/1.jsp是网站内容。
不是有一句话吗:
DNS :域名解析服务,就是将域名与IP进行映射的服务。而提供这种服务的服务器,称为DNS服务器。
localhost :本地主机
我们通过域名localhost可以访问本机,是因为我们Windows系统本身也充当当前DNS服务器的角色。
即,localhost既是域名,也充当DNS服务器。
总之,我们看到”C:\Windows\System32\drivers\etc”目录下的hosts文件中,虚拟主机localhost它的名称和域名相同,我们在另新创建虚拟主机www.gacl.cn时,将其域名也命名为www.gacl.cn。
本篇博文只是博主个人理解,如果有错误,欢迎大神指导。
感谢大神的这篇文章:http://www.cnblogs.com/xdp-gacl/p/3734395.html