(转)建站知识:域名/ 空间/ IP/ 端口之间的关系
先说域名解析吧,比如说你的域名是 www.sunnymould.com,这个域名对应着一个IP地址,域名解析就是把上面的域名转换成这个IP地址的过程,这样你就可以域名访问了上面地址上的内容了。
端口映射就是说,当你访问 www.sunnymould.com的时候,其实就是访问了一个IP地址的某个端口,而这个IP地址后面也许存在着一个局域网,这样我们就要指定网络访问这个IP的端口时候,指向哪个服务器(就是说WEB服务器是内网的哪个IP地址),比如内网WEB服务器地址为192.168.37.4,这样我们就需要在路由器中把 80端口指向这个内网IP。文件传播的过程我不懂怎么说,一般来说文件传播使用的是FTP协议,TCP协议也有。详细情况你就要看看具体的书。
内网IP端口映射到外网IP的端口
端口映射又叫做端口转发、虚拟服务器,不同的宽带路由器的命名有所不同。内网的一台电脑要上因特网对外开放
服务或接收数据,都需要端口映射。
端口映射分为动态和静态。
端口映射分为动态和静态。
动态端口映射:内网中的一台电脑要访问网站,会向NAT网关发送数据包,包头中包括对方网站IP、端口和本机IP、
端口,NAT网关会把本机IP、端口替换成自己的公网IP、一个未使用的端口,并且会记下这个映射关系,为以后转发
数据包使用。然后再把数据发给网站,网站收到数据后做出反应,发送数据到NAT网关的那个未使用的端口,
然后NAT网关将数据转发给内网中的那台电脑,实现内网和公网的通讯.当连接关闭时,NAT网关会释放分配给这条
连接的端口,以便以后的连接可以继续使用。动态端口映射其实也就是NAT网关的工作方式。
静态端口映射:就是在NAT网关上开放一个固定的端口,然后设定此端口收到的数据要转发给内网哪个IP和端口,
不管有没有连接,这个映射关系都会一直存在。就可以让公网主动访问内网的一台电脑。
比喻:端口映射过程就如同:你家在一个小区里B栋2410室,你朋友来找你,找到小区门口,不知道你住哪层哪号?
比喻:端口映射过程就如同:你家在一个小区里B栋2410室,你朋友来找你,找到小区门口,不知道你住哪层哪号?
就问守门的保安,保安很客气的告诉了他你家详细门牌,所以你朋友很轻松的找到了你家。这个过程就是外网访问内
网通过端口映射的形象比喻。
将域名解释到服务器地址的非80端口
访问网址的时候端口号是必然存在的,但是域名只能解析到IP,而解析不到端口,并且默认的Http端口是80。
这个不是因为域名解析的问题。可以通过web服务器设置解决问题。如果80端口已被占用,那就没有办法。除非你使用隐藏的域名转发(Url转发),但是实际还要加还是访问到了IP:port。
不隐藏路径域名转发:访问域名,自动跳转到指定的网络路径后,浏览器的地址栏里显示的地址自动变为显示真正的目标地址。
隐藏路径的域名转发: 访问域名,自动跳转到指定的网络路径后,浏览器的地址栏里显示的地址显示的地址保持不变,但实际访问到的是跳转后的内容。
隐藏路径的域名转发: 访问域名,自动跳转到指定的网络路径后,浏览器的地址栏里显示的地址显示的地址保持不变,但实际访问到的是跳转后的内容。
配置nginx,网站只有在域名或IP后添加端口才能顺利访问
nginx配置:
直接通过域名无法访问,加个8081端口之后就能顺利访问了,直接IP+端口的方式也可以。
- server {
- listen 8083 ;
- server_name 域名;
- location / {
- index index.html index.htm index.jsp;
- #proxy_redirect off;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_pass http://127.0.0.1:8081/;
- }
- }
nginx配置成监听8083端口了,因此只能使用指定端口才能访问,但是修改listen 8083这句改成listen 80,后直接使用域名又能访问到了网站。
直接访问IP或域名,ngnix设置监听到8083端口后,所有来自80端口的请求都会转发的8083端口。因为在nginx之外还有个防火墙,将所有通过80端口的请求都转到8083端口。
防火墙添加-A INPUT -p tcp -m tcp --dport 8083 -j ACCEPT之后,可以通过一直访问网站。
防火墙添加-A INPUT -p tcp -m tcp --dport 8083 -j ACCEPT之后,可以通过一直访问网站。
域名的二级域名映射到内网IP提供Web服务
问题描述:
公司有一网站www.abc.com,前两天申请了一个二级域名,www.oa.abc.com.并且做了相应的解析。在网站首页有一个OA登录入口,此入口与二级域名www.oa.abc.com绑定。我们公司有一个单独的OA服务器,服务器是内网IP地址。现在的问题是:怎么才能通过网站首页的OA登录入口进入到OA办公系统??服务器内网IP:192.168.1.6端口8181。
解决方案:
①:
把内部OA ip和端口映射到公网IP和端口,
www.oa.abc.com 解析到OA公网的IP:8181地址即可。
www.oa.abc.com 解析到OA公网的IP:8181地址即可。
内网的IP地址和互联网的域名绑定
按照如下步骤轻松解决绑定问题~~~
1.登陆你的路由器,就是带你局域网内主机上网的设备。查看他所拥有的IP地址。
2.在你申请域名的网站上填写相关参数,使其域名和IP(公网)对应。
3.在路由器上DDNS上将域名和你路由器的外网IP绑定。做完这三个步骤,外网就可以通过该域名访问到你的路由设备了。但是仍不是你的服务器。那么继续
4.在路由器上虚拟服务器或者端口映射(一个功能的不同叫法)中,将你服务所需要开放的端口映射出去,同时映射80端口(否则在访问时需要在域名后加端口号如:http://woaijigeci.com.cn:1653,如果把80也映射出去,直接输入域名就好了,对于一些用户你跟他说端口他也不懂)。添加相应规则。
5.完成以上步骤,就可以实现你说的功能了。
1.登陆你的路由器,就是带你局域网内主机上网的设备。查看他所拥有的IP地址。
2.在你申请域名的网站上填写相关参数,使其域名和IP(公网)对应。
3.在路由器上DDNS上将域名和你路由器的外网IP绑定。做完这三个步骤,外网就可以通过该域名访问到你的路由设备了。但是仍不是你的服务器。那么继续
4.在路由器上虚拟服务器或者端口映射(一个功能的不同叫法)中,将你服务所需要开放的端口映射出去,同时映射80端口(否则在访问时需要在域名后加端口号如:http://woaijigeci.com.cn:1653,如果把80也映射出去,直接输入域名就好了,对于一些用户你跟他说端口他也不懂)。添加相应规则。
5.完成以上步骤,就可以实现你说的功能了。
外网到内网端口映射
问题描述:公司用得是2003server的操作系统,但是用的是局域网IP,我想在路由器上做个端口映射,也就是我把公司的电脑给开着,从别的地方可以远程连接到公司的这台电脑上。
解决方案:远程那台主机最快捷简单的方式就是开启路由器的DMZ模式。
在路由器中找到DMZ选项,指定DMZ的地址为你要链接的主机局域网IP地址就可以。
在路由器中找到DMZ选项,指定DMZ的地址为你要链接的主机局域网IP地址就可以。
如果路由器不支持dmz主机,就要使用NAT了,中文名似乎叫做网络地址转换,这个路由肯定是支持的。使用NAT来实现端口映射,设置公网的IP端口转接到你远程内网IP端口即可。
二级域名映射到内网服务器IP端口
问题描述:
现在公司内网服务器已经映射到公网IP,并对公网IP做了域名解析,但是在内网输入域名直接打开防火墙登陆。
内网一台服务器的IP已经映射到公网IP了,80端口到80端口,现在公网IP也做了二级域名解析,想让不论在外网还是在内网的电脑都能通过用二级域名访问服务器应该怎么弄啊?
满意回答
内部需要做DNS,如果使用域控的话,只需要在DNS中添加个域名解析就可以,如果没有就需要新建DNS服务了,比较麻烦,也可以直接在防火墙中做一个允许这个域名的所有连接策略即可。
内网一台服务器的IP已经映射到公网IP了,80端口到80端口,现在公网IP也做了二级域名解析,想让不论在外网还是在内网的电脑都能通过用二级域名访问服务器应该怎么弄啊?
满意回答
内部需要做DNS,如果使用域控的话,只需要在DNS中添加个域名解析就可以,如果没有就需要新建DNS服务了,比较麻烦,也可以直接在防火墙中做一个允许这个域名的所有连接策略即可。
怎么在一个ip上绑定多个域名
Windows Server 服务器
Windows 2000 Server安装成功后,一般会启动一个默认的Web站点,为整个网络提供Internet服务。在中小型局域网中,服务器往往只有一台,但是一个Web站点显然又无法满足工作需要。那么,能否在一台服务器上设置多个Web站点(以下我们简称为“一机多站”)呢?答案是肯定的,并有多种途径可以达到这一目的。我们知道,网络上的每一个Web站点都有一个惟一的身份标识,从而使客户机能够准确地访问。这一标识由三部分组成,即TCP端口号、IP地址和主机头名,要实现“一机多站”就需要在这三个方面下工夫。
现在我们有一台Windows 2000 Server服务器,在这台服务器上要建立默认站点“教师之家”和新增站点“学生天地”(建立更多网站原理相同),下面我们分别探讨三种不同的实现途径。
途径一 TCP端口法
我们知道Web站点的默认端口一般为80,如果改变这一端口,就能实现在同一服务器上新增站点的目的。
假设服务器名为Master,安装有一块网卡,IP地址为192.168.0.1,那么安装IIS后会自动生成一个默认Web站点,我们就将其作为“教师之家”网站。点击“开始”→“程序”→“管理工具”→“Internet服务管理器”,出现“Internet信息服务”窗口(请见附图)。右键单击“默认Web站点”,选择“属性”进行设置。在“Web站点标识”中,将说明改为“教师之家”,IP地址选择192.168.0.1,TCP端口保持默认的80不变。将制作好的网站文件拷贝到默认目录中,“教师之家”的设置就算完成了。
现在我们有一台Windows 2000 Server服务器,在这台服务器上要建立默认站点“教师之家”和新增站点“学生天地”(建立更多网站原理相同),下面我们分别探讨三种不同的实现途径。
途径一 TCP端口法
我们知道Web站点的默认端口一般为80,如果改变这一端口,就能实现在同一服务器上新增站点的目的。
假设服务器名为Master,安装有一块网卡,IP地址为192.168.0.1,那么安装IIS后会自动生成一个默认Web站点,我们就将其作为“教师之家”网站。点击“开始”→“程序”→“管理工具”→“Internet服务管理器”,出现“Internet信息服务”窗口(请见附图)。右键单击“默认Web站点”,选择“属性”进行设置。在“Web站点标识”中,将说明改为“教师之家”,IP地址选择192.168.0.1,TCP端口保持默认的80不变。将制作好的网站文件拷贝到默认目录中,“教师之家”的设置就算完成了。
下面我们来增加“学生天地”站点。在“Internet信息服务”窗口中单击选定主机名Master,然后选择“操作”→“新建”→“Web站点”,出现“Web站点创建向导”窗口,依次点击[下一步],将站点说明定为“学生天地”,IP地址选择192.168.0.1,在TCP端口栏一定要将默认的80修改为其他值,如1050,选定主目录,设置好访问权限,“学生天地”站点的设置也完成了。
测试一下效果,在浏览器地址栏中输入http://192.168.0.1(默认的端口号80可以省略),回车,我们将访问到“教师之家”站点。输入http://192.168.0.1:1050(注意IP地址后的端口号一定不能少),则会出现“学生天地”站点。遗憾的是,采用这种方式设置的多站点无法与DNS结合使用。
途径二 IP地址法
一般情况下,一块网卡只设置了一个IP地址。如果我们为这块网卡绑定多个IP地址,每个IP地址对应一个Web站点,那么同样可以实现“一机多站”的目的。
点击“开始”→“设置”→“控制面板”,双击“网络和拨号连接”,右键单击“本地连接”,选择“属性”调出“本地连接属性”面板,选择“Internet协议(TCP/IP)”,点击“属性”调出“Internet协议(TCP/IP)属性”面板,点击下方的“高级”调出“高级TCP/IP设置”面板。在IP地址栏下面列出了网卡已设定的IP地址和子网掩码,点击[添加]按钮,在弹出的对话框中填上新的IP地址(如192.168.0.2,注意不能与其他机器的IP地址重复),子网掩码与原有的相同(如255.255.255.0)。然后依次[确定],就完成了多个IP地址的绑定。
按照上例中的做法设置默认站点“教师之家”,然后我们来增加“学生天地”站点。在“Internet信息服务”窗口中单击选定主机名Master,选择“操作→“新建”→“Web站点”,出现“Web站点创建向导”窗口,依次点击[下一步],将站点说明定为“学生天地”,IP地址选择192.168.0.2(注意不能与默认站点的IP地址相同),TCP端口保持默认的80不变,选定主目录,设置好访问权限,“学生天地”站点的设置完成。
分别在浏览器地址栏中输入http://192.168.0.1和http://192.168.0.2,测试一下效果。如果您嫌通过输入IP地址访问站点不够方便的话,完全可以通过设置DNS,用http://www.teacher.com代替http://192.168.0.1来访问“教师之家”,用http://www.student.com代替http://192.168.0.2来访问“学生天地”。
途径三 主机头法
在不更改TCP端口和IP地址的情况下,同样可以实现“一机多站”,这里我们需要使用“主机头名”来区分不同的站点。
所谓“主机头名”,实际上就是指www.student.com之类的友好网址,因此要使用“主机头法”实现“一机多站”,就必须先进行DNS设置。在DNS中设置http://www.teacher.com和http://www.student.com两个网址,将它们都指向惟一的IP地址192.168.0.1。
按照以上两例中的做法首先设置默认站点“教师之家”,由于是默认站点,因此基本无需进行特别设置。然后参考以上两例进行添加“学生天地”站点的操作,IP地址选择192.168.0.1,TCP端口保持默认的80不变,“此站点的主机头”一项一定要填上www.student.com,然后选定主目录,设置好访问权限,“学生天地”站点的设置完成。
分别在浏览器地址栏中输入http://www.teacher.com和http://www.student.com两个网址,测试效果。与上两例不同的是,用“主机头法”实现的“一机多站”必须使用友好网址才能访问。以上三种方式,您可以根据具体情况选择使用。如果服务器安装有两块以上的网卡,同样可以采用“IP地址法”为每块网卡指定不同的IP地址,从而实现“一机多站”。
测试一下效果,在浏览器地址栏中输入http://192.168.0.1(默认的端口号80可以省略),回车,我们将访问到“教师之家”站点。输入http://192.168.0.1:1050(注意IP地址后的端口号一定不能少),则会出现“学生天地”站点。遗憾的是,采用这种方式设置的多站点无法与DNS结合使用。
途径二 IP地址法
一般情况下,一块网卡只设置了一个IP地址。如果我们为这块网卡绑定多个IP地址,每个IP地址对应一个Web站点,那么同样可以实现“一机多站”的目的。
点击“开始”→“设置”→“控制面板”,双击“网络和拨号连接”,右键单击“本地连接”,选择“属性”调出“本地连接属性”面板,选择“Internet协议(TCP/IP)”,点击“属性”调出“Internet协议(TCP/IP)属性”面板,点击下方的“高级”调出“高级TCP/IP设置”面板。在IP地址栏下面列出了网卡已设定的IP地址和子网掩码,点击[添加]按钮,在弹出的对话框中填上新的IP地址(如192.168.0.2,注意不能与其他机器的IP地址重复),子网掩码与原有的相同(如255.255.255.0)。然后依次[确定],就完成了多个IP地址的绑定。
按照上例中的做法设置默认站点“教师之家”,然后我们来增加“学生天地”站点。在“Internet信息服务”窗口中单击选定主机名Master,选择“操作→“新建”→“Web站点”,出现“Web站点创建向导”窗口,依次点击[下一步],将站点说明定为“学生天地”,IP地址选择192.168.0.2(注意不能与默认站点的IP地址相同),TCP端口保持默认的80不变,选定主目录,设置好访问权限,“学生天地”站点的设置完成。
分别在浏览器地址栏中输入http://192.168.0.1和http://192.168.0.2,测试一下效果。如果您嫌通过输入IP地址访问站点不够方便的话,完全可以通过设置DNS,用http://www.teacher.com代替http://192.168.0.1来访问“教师之家”,用http://www.student.com代替http://192.168.0.2来访问“学生天地”。
途径三 主机头法
在不更改TCP端口和IP地址的情况下,同样可以实现“一机多站”,这里我们需要使用“主机头名”来区分不同的站点。
所谓“主机头名”,实际上就是指www.student.com之类的友好网址,因此要使用“主机头法”实现“一机多站”,就必须先进行DNS设置。在DNS中设置http://www.teacher.com和http://www.student.com两个网址,将它们都指向惟一的IP地址192.168.0.1。
按照以上两例中的做法首先设置默认站点“教师之家”,由于是默认站点,因此基本无需进行特别设置。然后参考以上两例进行添加“学生天地”站点的操作,IP地址选择192.168.0.1,TCP端口保持默认的80不变,“此站点的主机头”一项一定要填上www.student.com,然后选定主目录,设置好访问权限,“学生天地”站点的设置完成。
分别在浏览器地址栏中输入http://www.teacher.com和http://www.student.com两个网址,测试效果。与上两例不同的是,用“主机头法”实现的“一机多站”必须使用友好网址才能访问。以上三种方式,您可以根据具体情况选择使用。如果服务器安装有两块以上的网卡,同样可以采用“IP地址法”为每块网卡指定不同的IP地址,从而实现“一机多站”。
Apache服务器同一IP绑定多个域名
ServerName server.domain.com
DocumentRoot /www/mainserver
# 这是另外一个IP地址
DocumentRoot /www/mainserver
# 这是另外一个IP地址
NameVirtualHost 172.20.30.50
DocumentRoot /www/example1
ServerName www.example.com
# 你可以在这里添加其他指令 ...
DocumentRoot /www/example1
ServerName www.example.com
# 你可以在这里添加其他指令 ...
DocumentRoot /www/example2
ServerName www.example.org
# 你可以在这里添加其他指令 ...
任何不是针对172.20.30.50的请求都将由主服务器来伺服。而提交给172.20.30.50却没有主机名或没有”Host:”头的请求,都将由ww.example.com伺服。
在不同的IP的地址(比如一个内部和一个外部地址)上提供相同的内容
服务器有两个IP地址(192.168.1.1和172.20.30.40)。这个机器位于内部(局域网)网络和外部(广域网)之间。在外部,域名server.example.com指向外部地址(172.20.30.40),而在内部则指向内部地址(192.168.1.1)。
服务器可以为来自内部和外部的请求提供同样的内容,您只需要一个配置段就可以了。
服务器配置
NameVirtualHost 192.168.1.1
NameVirtualHost 172.20.30.40
DocumentRoot /www/server1
ServerName server.example.com
ServerAlias server
现在,从不同的网络提交的请求都会由同一个段来伺服。
注意
在内网中,您可以使用server这个名字来代替server.example.com这个全名。
跟上面一样,在上述的例子里,您可以用”*”来代替具体的IP地址,这样就可以对所有的地址都返回相同的内容了。
在不同的端口上运行不同的站点
如果您想让同一个IP的不同端口伺服多个域名。您可以借助在NameVirtualHost指令中定义端口的方法来达到这个目的。如果您想使用不带”name:port”的或是直接用Listen指令,您的配置将无法生效。
服务器配置
Listen 80
Listen 8080
NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080
ServerName www.example.com
DocumentRoot /www/domain-80
ServerName www.example.com
DocumentRoot /www/domain-8080
ServerName www.example.org
DocumentRoot /www/otherdomain-80
ServerName www.example.org
DocumentRoot /www/otherdomain-8080
建立基于IP的虚拟主机
一个有两个IP地址(172.20.30.40和172.20.30.50)分别对应域名www.example.com和www.example.org的配置如下:
服务器配置
Listen 80
DocumentRoot /www/example1
ServerName www.example.com
DocumentRoot /www/example2
ServerName www.example.org
如果存在主服务器,那么对没有出现在任一个段中的请求(比如,对localhost的请求)都会由主服务器来伺服。
混用基于端口和基于IP的虚拟主机
如果您的服务器有两个IP地址(172.20.30.40和172.20.30.50)分别对应域名www.example.com和www.example.org 。对每个域名,您都希望在80端口和8080端口发布您的网站。您可以这样配置:
服务器配置
Listen 172.20.30.40:80
Listen 172.20.30.40:8080
Listen 172.20.30.50:80
Listen 172.20.30.50:8080
ServerName www.example.org
# 你可以在这里添加其他指令 ...
任何不是针对172.20.30.50的请求都将由主服务器来伺服。而提交给172.20.30.50却没有主机名或没有”Host:”头的请求,都将由ww.example.com伺服。
在不同的IP的地址(比如一个内部和一个外部地址)上提供相同的内容
服务器有两个IP地址(192.168.1.1和172.20.30.40)。这个机器位于内部(局域网)网络和外部(广域网)之间。在外部,域名server.example.com指向外部地址(172.20.30.40),而在内部则指向内部地址(192.168.1.1)。
服务器可以为来自内部和外部的请求提供同样的内容,您只需要一个配置段就可以了。
服务器配置
NameVirtualHost 192.168.1.1
NameVirtualHost 172.20.30.40
DocumentRoot /www/server1
ServerName server.example.com
ServerAlias server
现在,从不同的网络提交的请求都会由同一个段来伺服。
注意
在内网中,您可以使用server这个名字来代替server.example.com这个全名。
跟上面一样,在上述的例子里,您可以用”*”来代替具体的IP地址,这样就可以对所有的地址都返回相同的内容了。
在不同的端口上运行不同的站点
如果您想让同一个IP的不同端口伺服多个域名。您可以借助在NameVirtualHost指令中定义端口的方法来达到这个目的。如果您想使用不带”name:port”的或是直接用Listen指令,您的配置将无法生效。
服务器配置
Listen 80
Listen 8080
NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080
ServerName www.example.com
DocumentRoot /www/domain-80
ServerName www.example.com
DocumentRoot /www/domain-8080
ServerName www.example.org
DocumentRoot /www/otherdomain-80
ServerName www.example.org
DocumentRoot /www/otherdomain-8080
建立基于IP的虚拟主机
一个有两个IP地址(172.20.30.40和172.20.30.50)分别对应域名www.example.com和www.example.org的配置如下:
服务器配置
Listen 80
DocumentRoot /www/example1
ServerName www.example.com
DocumentRoot /www/example2
ServerName www.example.org
如果存在主服务器,那么对没有出现在任一个段中的请求(比如,对localhost的请求)都会由主服务器来伺服。
混用基于端口和基于IP的虚拟主机
如果您的服务器有两个IP地址(172.20.30.40和172.20.30.50)分别对应域名www.example.com和www.example.org 。对每个域名,您都希望在80端口和8080端口发布您的网站。您可以这样配置:
服务器配置
Listen 172.20.30.40:80
Listen 172.20.30.40:8080
Listen 172.20.30.50:80
Listen 172.20.30.50:8080
DocumentRoot /www/example1-80
ServerName www.example.com
DocumentRoot /www/example1-8080
ServerName www.example.com
DocumentRoot /www/example2-80
ServerName www.example.org
DocumentRoot /www/example2-8080
ServerName www.example.org
混用基于域名和基于IP的虚拟主机
您想在一些地址上配置基于域名的虚拟主机而在另外一些地址上配置基于IP的虚拟主机。
服务器配置
Listen 80
NameVirtualHost 172.20.30.40
DocumentRoot /www/example1
ServerName www.example.com
DocumentRoot /www/example2
ServerName www.example.org
DocumentRoot /www/example3
ServerName www.example3.net
# IP-based
DocumentRoot /www/example4
ServerName www.example4.edu
DocumentRoot /www/example5
ServerName www.example5.gov
将和mod_proxy模块一起使用
下面的例子允许一个前端机器代理一个运行在其他机器上的虚拟主机。在如下示例中,在192.168.111.2机器上配置了一个同名的虚拟主机。这样,万一在同一台机器上代理了多个主机名,ProxyPreserveHostOn 指令能确保指定的主机名顺利通过代理。
ProxyPreserveHost On
ProxyPass / http://192.168.111.2
ProxyPassReverse / http://192.168.111.2/
ServerName hostname.example.com
使用”_default_”虚拟主机
为所有端口配置”_default_”虚拟主机
这样配置可以捕获所有指向没指定的IP地址和端口的请求。比如:一个没被任何虚拟主机使用的地址/端口对。
服务器配置
DocumentRoot /www/default
这样一个使用通配符端口的默认虚拟主机可以有效的防止请求被主服务器接收。
如果一个地址/端口对已经被一个基于域名的虚拟主机使用,那么”_default_”虚拟主机决不会处理发向这个地址/端口对的请求。如果一个”Host:”请求头中包含未知信息,或者干脆就没有,那么它会被第一个基于域名的虚拟主机(也就是在配置文件中最先出现的使用了那个地址/端口对的虚拟主机)处理。
您可以用AliasMatch或RewriteRule来重写任何请求,使它指向一个简单信息页面(或脚本)。
为不同的端口配置”_default_”虚拟主机
与第一种一样,但我们想让服务器侦听很多端口而第二个”_default_”虚拟主机单独侦听80端口。
服务器配置
DocumentRoot /www/default80
# ...
DocumentRoot /www/default
# ...
侦听80端口的”_default_”虚拟主机(必须出现在所有使用通配符端口的虚拟主机之前)会捕获所有发向一个未指定的IP地址的请求。主服务器将不会用于伺服任何请求。
为单独一个端口配置”_default_”虚拟主机
如果我们只想在80端口上建立唯一的一个”_default_”虚拟主机,我们应该这样配置:
服务器配置
DocumentRoot /www/default
...
发向一个未指定地址的80端口的请求将会由这个虚拟主机伺服;而发向未设定地址的其他端口的请求则由主服务器伺服。
将一个基于域名的虚拟主机移植为一个基于IP的虚拟主机
如果一个具有ww.example.org域名的虚拟主机(就是基于域名配置示例中的第二个)得到了自己的IP地址。为了避免一些域名服务器或代理服务器在移植期间仍对这个域名做老的解析,我们可以采用一种过渡方法:同时提供新旧两个IP地址的解析。
达到这个目的很简单。因为我们只要简单的把新地址(172.20.30.50)加入VirtualHost指令就行了。
服务器配置
Listen 80
ServerName www.example.com
DocumentRoot /www/example1
NameVirtualHost 172.20.30.40
DocumentRoot /www/example2
ServerName www.example.org
# ...
DocumentRoot /www/example3
ServerName www.example.net
ServerAlias *.example.net
# ...
现在这个虚拟主机就可以用新地址(表现为一个基于IP的虚拟主机)和旧地址(表现为一个基于域名的虚拟主机)同时进行访问了。
使用ServerPath指令
如果我们在同一个服务器上运行了两个基于域名的虚拟主机。为了匹配正确的虚拟主机,客户端必须发送正确的”Host:” 头。而旧的使用HTTP/1.0的客户端无法发送这样的头,这样Apache就无法辨别客户端想要连接哪个虚拟主机(会用主虚拟主机来伺服这个请求)。为 了尽量提供向下兼容性,我们可以提供一个主虚拟主机来返回一个页面,在页面中加入指向基于域名的虚拟主机的URL前缀的链接。
服务器配置
NameVirtualHost 172.20.30.40
# 主虚拟主机
DocumentRoot /www/subdomain
RewriteEngine On
RewriteRule ^/.* /www/subdomain/index.html
# ...
DocumentRoot /www/subdomain/sub1
ServerName www.sub1.domain.tld
ServerPath /sub1/
RewriteEngine On
RewriteRule ^(/sub1/.*) /www/subdomain$1
# ...
DocumentRoot /www/subdomain/sub2
ServerName www.sub2.domain.tld
ServerPath /sub2/
RewriteEngine On
RewriteRule ^(/sub2/.*) /www/subdomain$1
# ...
由于ServerPath指令的作用,发送到htp://www.sub1.domain.tld/sub1/的请求总会被sub1-vhost所伺服。
如果客户端发送了正确的”Host:”头,发送到htp://www.sub1.domain.tld、的请求只会被sub1-vhost所伺服。如果没有发送”Host:”头,客户端将会得到从主虚拟主机发送的信息页面。
请注意,这里还有一点小问题:如果客户端没有发送”Host:”头,发送到http://www.sub2.domain.tld/sub1/的请求还是会被sub1-vhost所伺服
(转)http://blog.csdn.net/tham_/article/details/41949815
转载 请注明原文地址并标明转载:http://www.cnblogs.com/laopo
商业用途请与我联系:lcfhn168@163.com