咨询电话:
15628812133
03
2017/06

一个IP服务器是如何分辨你访问的到底是哪个网站?

发布时间:2017-06-03 14:55:59
发布者:pengyifeng
浏览量:
0

         一台服务器一般对应一个IP地址,但是一个IP地址下面却可以拥有很多网站。这是为什么呢?服务器是如何分辨出来这些相同IP所对应的到底是哪一个网站呢?

先了解服务器是如何工作的:

(1)客户端发送请求

  客户端(通过浏览器)和Web服务器建立TCP连接,连接建立以后,向Web服务器发出访问请求(如get)。根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型和请求的URL等一系列信息。

(2)服务器解析请求

  Web服务器对请求按照HTTP协议进行解码来确定进一步的动作,设计的内容有三鼐要点:方法(GET)、文档(/sample.html)、和浏览器使用的协议(HTTP/1.1)其中方法告诉服务器应完动的动作,GET方法的含义很明显是:服务器应定位、读取文件并将它返回给客户。

Web服务器软件现在就知道了,它应该找到文件/sample.html,并使用HTTP/1.1协议将内存返回给客户。信息是经过与请求到来相同的连接发出的,所以服务器不需要定们客户或创建新的连接。

(3)读取其它信息(非必须步骤)

    Web服务器根据需要去读取请求的其它部分。在HTTP/1.1下,客户还应给服务器提供关于它的一些信息。元信息(metainformation)可用来描述浏览器及其能力,以使服务器能据此确定如何返回应答。

(4)完成请求的动作

  若现在没有错误出现,WWW服务器将执行请求所要求的动作。要获取(GET)一个文档,web服务器在其文档树中搜索请求的文件(/sample.html)。这是由服务器机器上作为操作系统一部分的文件系统完成的。若文件能找到并可正常读取,则服务器将把它返回给客户。

如果成功:文件被发送出去。

         在服务器解析请求的时候,就将传输过来的数据进行匹配,如果在apache的配置文件中可以匹配到相应的配置文件,就使用相对应的配置文件,如果没有匹配到的话就使用默认的配置文件来访问服务器,一般的网站在建立站点的时候就会生成一个相对应的配置文件,输入相对应的网址,就会使用相对应的配置文件;

下面是一个配置文件的例子:


ServerName 192.168.1.49:801
DocumentRoot "E:/PHP/test"

 
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex test.php
AllowOverride None 
Order Deny,Allow 
Allow from all

1.Listen  要监听的端口,多个端口,要写多个Listen;否则Apache启动的时候,不会启动相应的接口。

 比如:  

           Listen 80

           Listen 8080

2.NameVirtualHost 如果没有这个,标签就没什么作用。

 (感谢okiwill的指正,这里特指基于域名访问的情况,若是基于IP访问的,以第一个指定IP的VirtualHost为准,每个IP可以单独指定)

  一个NameVirtualHost 可以对用多个,每个必须有自己的NameVirtualHost(我猜的)

   NameVirutalHost *:80

   制定这个主机的IP和端口,如果服务器上有多个IP,就可以制定某个IP的某个端口是哪个 主机。

    (新版的Apache已经去除了NameVirtualHost 这个配置,因为确实没什么用,参数在VirtualHost中都已经指明了)

3.最关键的VirtualHost

   重要:Apache 在接受到请求时,首先会默认第一个VirtualHost,然后再找匹配的,如果没有匹配的,就是第一个VirtualHost起作用。

   因此在httpd.conf中,将(这个是所有目录的默认配置)

   和 的权限,都是deny from all.作为默认。




关键词:
返回列表