使用域名访问本地项目
- 统一环境:实际开发中,会有不同的环境。如果不同环境使用不同的ip去访问,可能会出现一些问题。为了保证所有环境的一致,我们会在各种环境下都使用域名来访问。那么,当我们在浏览器输入一个域名时,浏览器是如何找到对应服务的ip和端口的呢?
- 环境
- 开发环境:自己的电脑
- 测试环境:提供给测试人员使用的环境
- 预发布环境:数据是和生成环境的数据一致,运行最新的项目代码进去测试
- 生产环境:项目最终发布上线的环境
- 域名(购买一个主域名后,其可以解析无数个二级域名)
- 主域名是:www.leyou.com,leyou.com
- 管理系统域名:manage.leyou.com
- 网关域名:api.leyou.com
- 环境
-
域名解析:一个域名一定会被解析为一个或多个ip。这一般会包含两步:
-
本地域名解析 :浏览器会首先在本机的hosts文件中查找域名映射的IP地址,如果查找到就返回IP ,没找到则进行域名服务器解析,一般本地解析都会失败,因为默认这个文件是空的。
-
Windows下的hosts文件地址:C:/Windows/System32/drivers/etc/hosts
-
Linux下的hosts文件所在路径: /etc/hosts
-
-
域名服务器解析:本地解析失败,才会进行域名服务器解析,域名服务器就是网络中的一台计算机,里面记录了所有注册备案的域名和ip映射关系,一般只要域名是正确的,并且备案通过,一定能找到。
-
伪造本地的hosts文件,实现对域名的解析。
-
nginx解决端口问题
域名问题解决了,但是现在要访问后台页面,还得自己加上端口:http://manage.taotao.com:9001
。
这就不够优雅了。我们希望的是直接域名访问:http://manage.taotao.com
。这种情况下端口默认是80,如何才能把请求转移到9001端口呢?(80端口:HTTP 超文本传输服务)
这里就要用到反向代理工具:Nginx
代理是一个中介,A和B可以直接连接,中间插入一个c,c就是中介。刚开始的时候代理都是帮助内网的client访问外网servlet的(如http代理) ,从内到外。后来出现了反向代理,帮助外网client访问内网servlet的。从外到内。 https://blog.csdn.net/weixin_43803070/article/details/90404645
nginx可以作为web服务器,但更多的时候,我们把它作为网关,因为它具备网关必备的功能:
-
反向代理:正向代理隐藏真实客户端,反向代理隐藏真实服务端
-
负载均衡:负载均衡,意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。
-
动态路由:动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。
-
请求过滤
什么是反向代理?
-
代理:通过客户机的配置,实现让一台服务器代理客户机,客户的所有请求都交给代理服务器处理。
-
反向代理:用一台服务器,代理真实服务器,用户访问时,不再是访问真实服务器,而是代理服务器。(虚拟一个网络上的真实服务器虚拟出端口)
nginx可以当做反向代理服务器来使用:
-
我们需要提前在nginx中配置好反向代理的规则,不同的请求,交给不同的真实服务器处理
-
当请求到达nginx,nginx会根据已经定义的规则进行请求的转发,从而实现路由功能