今天是刘小爱自学Java的第142天。
感谢你的观看,谢谢你。
学习计划安排,主要解决两个问题:
一个是使用SwitchHosts解决域名问题。一个nginx的使用,解决端口问题。目录
一、SwitchHosts解决域名
要知道在实际开发中会有不同的环境。
开发环境:自己的电脑。测试环境:提供给测试人员使用的环境。预发布环境:数据是和生成环境的数据一致,运行最新的项目代码进去测试。生产环境:项目最终发布上线的环境。如果不同环境使用不同的ip去访问,可能会出现一些问题。所以要统一环境。
1统一环境
现在条件有限,不可能说去注册一个域名来使用,因此我们可以伪造本地的hosts文件。
首先找到电脑中的hosts文件:
Windows下的hosts文件地址:C:/Windows/System32/drivers/etc/hostsLinux下的hosts文件所在路径: /etc/hosts然后再修改本地的hosts为:
127.0.0.1 http://api.liuxiaoai.com :我们的网关Zuul。127.0.0.1 http://manage.liuxiaoai.com:我们的后台系统地址。这样的话就能解决一个问题,以后在浏览器上访问设定的域名即可,而不是直接使用ip。
一个域名一定会被解析为一个或多个ip,浏览器会在本机的hosts文件中查找域名映射的ip地址。
3SwitchHosts的使用
每次都要去找到host文件,路径繁琐,非常麻烦,所以可以使用SwitchHosts来完成:
注意,再次强调:
真正地做项目会去买一个域名,配置好后,所有人通过该域名访问即可。
但是现在没有买域名,所以使用SwitchHosts来自己骗自己,目的是知道有这回事。
二、nginx解决端口问题
虽然域名解决了,但是现在如果我们要访问,还得自己加上端口9001。
那么问题来了,比如说我们去访问淘宝,它怎么就不需要加上一个端口号呢?
所以我们希望实现的是只需要域名就能直接实现访问:http://manage.liuxiaoai.com。
如果不输入端口,浏览器会将其默认设成80,那如何才能把请求转移到9001端口呢?
这里就要用到反向代理工具:Nginx
①nginx作为web服务器
Web服务器分2类:
web应用服务器,如:Tomcat。web服务器,如:Apache 服务器,Nginx它们的区分在于:
Nginx不能解析jsp等页面,只能处理js、css、html等静态资源。 但是Nginx的并发能力要远高于Tomcat这些web应用服务器。所以项目中使用Nginx + Tomcat两者结合。
②nginx作为反向代理服务器
什么是反向代理?
用一台服务器代理真实服务器,用户访问的不再是真实服务器而是代理服务器。
利用反向代理,就可以解决端口问题:
注意:浏览器中输入任意路径如果没有指定端口,浏览器会默认配置端口为80。
在nginx中配置好反向代理的规则:
根据不同的请求交给不同的真实服务器处理。
当请求到达nginx,nginx会根据已经定义的规则进行请求的转发,从而实现反向代理。
③nginx安装和使用
安装非常简单,网上一堆资料,不再赘述,我们在本地安装一台nginx,目录结构如下:
nginx可以直接点击,但是会闪一下导致以为它没启动,实际上它已经后台启动了。
这样的坏处在于如果多次点击会启动多个nginx服务器。
所以一般会通过命令行来启动,命令如下:
启动:start nginx.exe停止:nginx.exe -s stop重新加载:nginx.exe -s reload其中在conf文件夹中可以完成配置:
在浏览器上输入http://manage.liuxiaoai.com,因为没有加端口,浏览器会默认配置端口80。
而我们在nginx中配置的监听端口又是80,所以会访问到nginx服务器。
nginx服务器就会根据配置,反向代理到我们设置本地路径+9001端口。
三、实现流程分析
现在实现了域名访问网站,分析一遍流程:
①浏览器准备发起请求,访问对应域名,但需要进行域名解析。
②优先进行本地域名解析,因为修改了hosts,所以解析成功,得到地址:127.0.0.1,请求被发往解析得到的ip,并且默认使用80端口。
③nginx监听80端口,因此捕获这个请求。
④nginx中配置了反向代理规则,将http://manage.liuxiaoai.com代理到了本地ip+9001端口。
⑤后台系统端口是9001,得到请求并处理,完成后将响应返回到nginx服务器。
⑥nginx将得到的结果返回到浏览器。
最后
谢谢你的观看。
如果可以的话,麻烦帮忙点个赞,谢谢你。