定义
Web服务器又称网页服务器或HTTP服务器。
协议
协议,是通话的前提;客户端想要与服务端进行通信,就需要满足规定的协议。拿前两天学习的DHCP与DNS协议来说,Win+R
,输入services.msc
,查看本地服务。
可以发现,当前主机作为DHCP和DNS的客户端,这两个服务都是打开的,若是将它们关闭,则当前主机无法再自动获取IP地址或是对域名进行解析了,而想要从服务端获取服务,就要遵循相应的协议,所有的通信都是建立在遵循同一套协议的基础上。Web服务器使用的是协议是HTTP或HTTPS。
端口
HTTP协议端口号:TCP80
HTTPS协议端口号:TCP443
Web服务器发布软件
网站,需要包含多个网页,也需要具备IP地址,DNS以及端口相关信息。想要发布一个网站供人们访问,就需要通过web服务器发布软件,下面介绍几类:
- 微软:IIS(可发布Web网站和FTP站点)
- Linux:Apache/LAMP/Tomcat/Nginx .etc
- 第三方:phpStudy、XAMPP(均内嵌LAMP,主要用于学习和测试)
网站类型
- 静态网站:一般扩展名为.html或.htm,无后台数据库。
- 动态网站:这里需要稍作扩展的讲一下,在过去,没有前端这个概念,排版布局,页面渲染,数据库查询动态数据都会放在一起。能够实现这种功能的语言,例如PHP,就很受欢迎。那段时期,动态网站的扩展名通常为.asp或.php。现如今,前后端已经分离,并迈入了云端时代,网站界面通常用框架编写,会混入大量逻辑,文件可能是.tpl .vue .jsx这种框架独有格式的文件,但最后编译打包时,都会转为对应的html和js文件。前端和后台数据逻辑,已经分开了。
实验
实验环境:客户机(Windows XP)、服务端(Windows 2003)
Web服务器发布软件:IIS
安装IIS
进入Windows组件向导(参考DNS安装) -> 应用程序服务器 -> Internet信息服务(IIS) -> 勾上万维网服务(会自动勾上公用文件),这里把下一篇要用到的文件传输协议(FTP)服务也给勾上。完成安装后,可以在管理工具中找到IIS。
安装之后,进入命令行输入
netstat -an
,可以发现,21端口(ftp)与80端口(http)已经打开。
发布网站
打开IIS管理器软件,在网站目录下,可以看到一个默认网站
我们试图去访问一下这个默认网站,切换到客户机(Windows XP),打开任一游览器,访问
10.1.1.1
(服务器地址)。会看到如下所示情形。这并不是访问出错了,切回服务器(Windows 2003),在C盘下,可以看到一个叫做Inetpub目录,进入后会发现有多个目录,其中wwwroot这个目录就是存放网站信息的目录
进入后,会看到一个.htm文件,点开它,会发现它就是先前从客户机访问的网站。验证了刚刚实验的成功。
接下来,我们自己手动发布一个网站,网站是由网页和站点组成的,所以我们需要先编写一个网页,为了方便,这里只简单编写一个html文件,并将其存到指定目录下,名为index.html。
回到IIS管理器,选择网站,右键->新建->网站,关于网站描述,随便写就可以了,这里填的是Web0x1。
下一步,这里分别需要配置IP,端口以及主机头,这三个单位在部署多个站点时会有所用处。这里IP地址有两个选项,选择全部未分配时,会任意选择当前主机(服务器)下的IP地址作为网站的IP地址,由于当前只有一个IP地址,所以无论选择哪个都无所谓。端口这里默认填写80,主机头默认就不填了。后面会说到。
然后填写路径,这里选择刚刚编写的网页所在文件夹的路径。这里允许匿名访问网站一定要勾上!不然访问个网站还让你输用户名密码啥的
来到下一步,完成后情况如下。为了不影响实验,这里先把默认网站给它停止运行。右键Web0x1进入属性->文档。在右侧添加,将先前编写的index.html添加到默认内容文档,并移到最上方。保存设置。
这时,我们回到客户机(Windows XP)上来,再次试图访问
10.1.1.1
(服务器地址),就可以看到先前编写的index.html作为网站页面出现。这里作个小结,在使用IIS发布网站时需要指定网站的IP,端口,以及主机头值(域名),在IP与端口确定的情况下,也可以不指定主机头值。此外需要设置网站属性,将要展示的页面,放到默认文档的最前面,这样访问时,就可以直接打开该网页。
部署多个站点
前面学习了使用IIS发布网站,但是一个服务器只发布一个网站,那实在太浪费了,假设公司想弄一个业务系统出来,同样放在这个服务器上,该如何操作呢?接下来就介绍如何在一个Web服务器上部署多个站点:
首先,创建一个网页(为了方便,就不写一个业务系统了,随意写一个简单网页)
接着,新建一个网站,描述就写Web0x2,其它和手动发布网站一样,选择上一步创建的网页。创建完发现,该网站默认被停止运行了,当我们试图启动时,会出现如下弹窗。
它告诉我们,80端口已经被占用了,需要重新绑定端口号,进入Web0x2属性,在网站一栏,找到TCP端口,将其设置为任一1000以上的端口号即可。完了别忘记在文档一栏,将该站点对应的网页添加并移到默认内容文档的最上方。
设置完后,切回客户机,当访问
10.1.1.1:8080
时,就会进入Web0x2站点对应的网页,当访问10.1.1.1:80
时就会进入Web0x1站点对应的网页(http协议默认是80端口因此会不显示)。这是通过控制端口完成对单服务器多网站的实现。当然,除了控制端口,也可以通过控制IP地址来实现,首先进入服务器(Windows 2003),给它增加一个地址。操作如下图所示
然后修改Web0x2,将其IP地址修改为10.1.1.3,端口则改回80。
也可以实现单服务器多网站
虽然控制IP或者端口都可以实现单服务器部署多个网站的操作,但这不是最优解。因为用户不会记住你的IP或者是端口,真实网站发布时也是如此,所以才有了第三种方法,通过设定网站主机头,也就是域名,来实现同样的操作。这里进行演示,例如进入Web0x2的属性后,选择网站->高级->编辑,设定主机值。然后对Web0x1使用类似的操作。
接下来就可以按照前一篇DNS正向解析的方式,给两个网站分别在正向查找区域中创建一个区域,并添加主机记录。
再回到客户机(Windows XP),将DNS服务器指向我们的Windows 2003系统。此时便可通过域名访问同一台服务器上的不同站点了。在同IP地址,同端口的情况下。但是这样就不可以通过IP访问了。
动态网站部署(旧)
这里就不进行完整的过程演示了,现如今,Asp项目在网上也已经很难找到了。不过对于sql注入等手法还是很有学习意义,这里只简单说明一下部署过程。
- DNS服务中新增一条关于此网站域名的正向解析记录。
- IIS中创建网站,勾上运行脚本(如ASP)和执行(如ISAPI应用程序或CGI)这两个选项。
- 网站属性中,找到对应的首页(如index.asp,default.asp),将其放到默认文档的最前面。
- 视频中介绍利用时有点翻车,进入网站属性->主目录->配置->选项->启用父路径。经此操作后,可以在前端页面通过首页访问首页所在目录的子目录下的网页。我对这里的疑问在于,既然可以设置服务器选项了,那么也没有必要去从前端进入控制台了。
端口小结
1 | 3389端口: 远程桌面 |
参考资料
参考教程:
参考链接: