初学者如何parsing访问域名parsing为Web服务器IP?

我有一个Apache Web服务器托pipe几个Django网站使用相同的域名,但不同的子域:

proj1.example.com proj2.example.com proj3.example.com 

上面每个的Apacheconfiguration文件开始如下所示:

 <VirtualHost *:80> ServerName proj1.example.com 

假设服务器的外部IP为200.xxx ,内部IP为10.xxx如果要将新的子域名(proj4.example.com)添加到服务器,应使用哪两个IP? 我通常做的Web开发和基本的Apacheconfiguration,我仍然模糊了以后发生的事情。 有人可以给我一个彻底的解释,什么需要设置和发生了什么事情后,我已经设置了新的网站的Apacheconfiguration文件?

要快速回答你的问题,你不需要担心你的configuration的IP地址,域名/别名是所有你必须担心的,因为Apache将使用浏览器传递的HTTP_HOST头。

 <VirtualHost *:80> ServerName proj1.example.com DocumentRoot /path/to/proj1 </VirtualHost> <VirtualHost *:80> ServerName proj2.example.com DocumentRoot /path/to/proj2 </VirtualHost> <VirtualHost *:80> ServerName proj3.example.com DocumentRoot /path/to/proj3 </VirtualHost> 

啰嗦的解释。

在拉丁语中,有两个分开的事情在这里进行。

  1. 将域名parsing为IP
  2. 发送一个Web请求到虚拟主机设置的服务器

将域名parsing为IP

当浏览器被告知拉起一个页面时,它所做的第一件事情就是为proj1.example.com做一个DNS查询。 DNS首先请求ROOT服务器,并说“谁控制example.com”,然后根服务器指向控制.com域的DNS服务器,并对该DNS服务器说,“谁控制example.com “,然后它到您的DNS服务器,然后去”什么是proj1.example.com的IP地址“。 您的DNS服务器说,“哦,这是IP xxxx”,这是外部IP地址。 浏览器会将请求发送到您的IP,在此时,您的路由器将其转发到您的服务器(使用内部IP地址)。 Web服务器的IP地址不是HTTP请求/响应的一部分,所以不需要。

从Web服务器请求内容

您的浏览器现在知道该IP地址,并向您的iP发送请求。 请求看起来像:

 GET http://proj1.example.com/path/being/requested HTTP/1.0 Host: proj1.example.com User-Agent: [blah blah blah] Cookie: [cookie info] 

答案看起来像

 HTTP/1.0 200 OK (new line) <html> ... </html> 

Apache通过host / url中的域名知道请求的主机,并相应地提取内容。

更多文档可以在这里find: http : //httpd.apache.org/docs/2.1/vhosts/name-based.html

注意:HTTP协议的旧版本不支持Host头,那么,如果你想在同一台机器上设置虚拟主机,那么它必须使用多个IP地址,并将每个IP地址绑定到唯一的站点。 networking上的一些文档可能仍然反映了这一点。 一般来说,你不必担心这一点,因为现在所有的浏览器都支持使用Host