与相同IP地址关联的网站

时间:2012-03-14 01:49:51

标签: http networking ip-address

当有多个与同一IP地址关联的网站(主机名)时,Web服务器如何识别要提供的URL?

5 个答案:

答案 0 :(得分:1)

通过使用虚拟主机。

这是nginx

的配置示例
http {
  index index.html;

  server {
    server_name www.domain1.com;
    access_log logs/domain1.access.log main;

    root /var/www/domain1.com/htdocs;
  }

  server {
    server_name www.domain2.com;
    access_log  logs/domain2.access.log main;

    root /var/www/domain2.com/htdocs;
  }
}

基本上,当用户请求资源时,服务器会检查请求的host field并做出相应的响应。

答案 1 :(得分:1)

使用Apache Web服务器,定义了一组虚拟主机,其中包含用于将请求与目录匹配的参数。使用Ubuntu Web服务器的基本默认设置,您将在/ etc / apache2 / sites-enabled目录中有一个文件,如下所示:

<VirtualHost>
    ServerName example.com
    DocumentRoot /var/www/example.com/httpdocs
</VirtualHost>

这告诉apache所有到达此计算机的example.com请求都应该路由到/var/www/example.com/httpdocs文件夹。 example.org的另一个条目可以将其指向另一个文件夹。

同样相关的是/ etc / hosts文件和apache a2ensite命令。

答案 2 :(得分:1)

这是通过使用NameVirtualHost

在apache中完成的

首先声明httpd.conf中的IP和端口使用如下:

NameVirtualHost 127.0.0.1:80

然后在虚拟主机块中执行:

<VirtualHost 127.0.0.1:80>
    ServerName your_domain
    DocumentRoot path_to_your_app
    ....
</VirtualHost>

这将允许您在一个IP上拥有多个主机。但请注意,如果您直接访问IP,它会将请求定向到第一个虚拟主机。

答案 3 :(得分:1)

HTTP 1.1定义了一个名为“Host”标头的标头。

在Apache或任何其他服务器看到请求之前,客户端浏览器会创建http 1.1请求标头并将请求发送到您要求浏览器联系的服务器。

请求命中apache后,服务器会查看HTTP请求标头的Host标头部分。您可以使用wireshark,liveHttpHeaders,HTTPfox或任何您喜欢的http解析/数据包捕获工具来观察这一点。 HTTP 1.1中的主机头(主机:头没有为HTTP 1.0或0.9定义)的格式如下:

主持人:www.example.com \ r \ n

当apache查看此标头时,它会解析它并遍历现有的VirtualHosts表,该表用于将匹配的主机标头映射到定义的目录或操作。

也就是说,如果你有一个www.example.com的NameVirtualHost指向/some/path/example.com/

NameVirtualhost stuff here
<VirtualHost 127.0.0.1:80>
ServerName www.example.com
DocumentRoot /some/path/example.com
....
</VirtualHost>

你的apache会接受以下请求:

GET /index.html HTTP/1.1\r\n <-- version is a key part
Connection: close\r\n
Host: www.example.com\r\n <-- key part
Accept: blah\r\n
Another: blah\r\n

阅读维基页面了解有关标题格式的更多信息。

Apache会看到主机头包含www.example.com并提供该文件 /some/path/example.com/index.html因为该目录和文件名与请求的资源匹配,而且它是用于为包含www.example.com的主机头提供请求的目录。

这就是它的工作原理。

答案 4 :(得分:0)

取决于服务器的类型。 Apache使用.htaccess文件,您也可以配置虚拟主机。如果您正在尝试执行某些特定操作,则可能需要编辑您的问题,以准确包含您要查找的内容以及您要用来托管的软件。

相关问题