先说域名解析吧,好比说你的域名是 www.sunnymould.com,这个域名对应着一个IP地址,域名解析就是把上面的域名转换成这个IP地址的过程,这样你就能够域名访问了上面地址上的内容了。html
端口映射就是说,当你访问 www.sunnymould.com的时候,其实就是访问了一个IP地址的某个端口,而这个IP地址后面也许存在着一个局域网,这样咱们就要指定网络访问这个IP的端口时候,指向哪一个服务器(就是说WEB服务器是内网的哪一个IP地址),好比内网WEB服务器地址为192.168.37.4,这样咱们就须要在路由器中把 80端口指向这个内网IP。文件传播的过程我不懂怎么说,通常来讲文件传播使用的是FTP协议,TCP协议也有。详细状况你就要看看具体的书。前端
端口映射又叫作端口转发、虚拟服务器,不一样的宽带路由器的命名有所不一样。内网的一台电脑要上因特网对外开放nginx
服务或接收数据,都须要端口映射。web
端口映射分为动态和静态。 浏览器
动态端口映射:内网中的一台电脑要访问网站,会向NAT网关发送数据包,包头中包括对方网站IP、端口和本机IP、服务器
端口,NAT网关会把本机IP、端口替换成本身的公网IP、一个未使用的端口,而且会记下这个映射关系,为之后转发网络
数据包使用。而后再把数据发给网站,网站收到数据后作出反应,发送数据到NAT网关的那个未使用的端口,dom
而后NAT网关将数据转发给内网中的那台电脑,实现内网和公网的通信.当链接关闭时,NAT网关会释放分配给这条jsp
链接的端口,以便之后的链接能够继续使用。动态端口映射其实也就是NAT网关的工做方式。tcp
静态端口映射:就是在NAT网关上开放一个固定的端口,而后设定此端口收到的数据要转发给内网哪一个IP和端口,
无论有没有链接,这个映射关系都会一直存在。就可让公网主动访问内网的一台电脑。
比喻:端口映射过程就如同:你家在一个小区里B栋2410室,你朋友来找你,找到小区门口,不知道你住哪层哪号?
就问守门的保安,保安很客气的告诉了他你家详细门牌,因此你朋友很轻松的找到了你家。这个过程就是外网访问内
网经过端口映射的形象比喻。
访问网址的时候端口号是必然存在的,可是域名只能解析到IP,而解析不到端口,而且默认的Http端口是80。
这个不是由于域名解析的问题。能够经过web服务器设置解决问题。若是80端口已被占用,那就没有办法。除非你使用隐藏的域名转发(Url转发),可是实际还要加仍是访问到了IP:port。
不隐藏路径域名转发:访问域名,自动跳转到指定的网络路径后,浏览器的地址栏里显示的地址自动变为显示真正的目标地址。
隐藏路径的域名转发: 访问域名,自动跳转到指定的网络路径后,浏览器的地址栏里显示的地址显示的地址保持不变,但实际访问到的是跳转后的内容。
nginx配置:
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/; } }
直接经过域名没法访问,加个8081端口以后就能顺利访问了,直接IP+端口的方式也能够。
nginx配置成监听8083端口了,所以只能使用指定端口才能访问,可是修改listen 8083这句改为listen 80,后直接使用域名又能访问到了网站。
直接访问IP或域名,ngnix设置监听到8083端口后,全部来自80端口的请求都会转发的8083端口。由于在nginx以外还有个防火墙,将全部经过80端口的请求都转到8083端口。
防火墙添加-A INPUT -p tcp -m tcp --dport 8083 -j ACCEPT以后,能够经过一直访问网站。
问题描述:
公司有一网站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地址便可。
按照以下步骤轻松解决绑定问题~~~
1.登录你的路由器,就是带你局域网内主机上网的设备。查看他所拥有的IP地址。
2.在你申请域名的网站上填写相关参数,使其域名和IP(公网)对应。
3.在路由器上DDNS上将域名和你路由器的外网IP绑定。作完这三个步骤,外网就能够经过该域名访问到你的路由设备了。可是仍不是你的服务器。那么继续
4.在路由器上虚拟服务器或者端口映射(一个功能的不一样叫法)中,将你服务所须要开放的端口映射出去,同时映射80端口(不然在访问时须要在域名后加端口号如:http://woaijigeci.com.cn:1653,若是把80也映射出去,直接输入域名就行了,对于一些用户你跟他说端口他也不懂)。添加相应规则。
5.完成以上步骤,就能够实现你说的功能了。
问题描述:公司用得是2003server的操做系统,可是用的是局域网IP,我想在路由器上作个端口映射,也就是我把公司的电脑给开着,从别的地方能够远程链接到公司的这台电脑上。
解决方案:远程那台主机最快捷简单的方式就是开启路由器的DMZ模式。
在路由器中找到DMZ选项,指定DMZ的地址为你要连接的主机局域网IP地址就能够。
若是路由器不支持dmz主机,就要使用NAT了,中文名彷佛叫作网络地址转换,这个路由确定是支持的。使用NAT来实现端口映射,设置公网的IP端口转接到你远程内网IP端口便可。
问题描述:
如今公司内网服务器已经映射到公网IP,并对公网IP作了域名解析,可是在内网输入域名直接打开防火墙登录。
内网一台服务器的IP已经映射到公网IP了,80端口到80端口,如今公网IP也作了二级域名解析,想让不论在外网仍是在内网的电脑都能经过用二级域名访问服务器应该怎么弄啊?
满意回答
内部须要作DNS,若是使用域控的话,只须要在DNS中添加个域名解析就能够,若是没有就须要新建DNS服务了,比较麻烦,也能够直接在防火墙中作一个容许这个域名的全部链接策略便可。
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不变。将制做好的网站文件拷贝到默认目录中,“教师之家”的设置就算完成了。
下面咱们来增长“学生天地”站点。在“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地址,从而实现“一机多站”。
ServerName server.domain.com
DocumentRoot /www/mainserver
# 这是另一个IP地址
NameVirtualHost 172.20.30.50
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
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所伺服。