当前位置: 首页 > 科技观察

图文讲解,如何使用Nginx反向代理,负载均衡

时间:2023-03-15 16:14:03 科技观察

从老到老的前端圈子一直很新,还要不断学习,在进大厂的路上,还需要熟悉一门后台语言等。用别人开玩笑的话说,十年前的java技术现在还能用,前端技术就不是这样了。突然想起deno项目发布时的一个搞笑问题,“请不要更新,我学不会了”。虽然看起来是个玩笑的问题,但也说明了前端人不得不表现出来的疲态。知识点越来越大,学习内容越来越多。也听有朋友说现在面试阿里很难进去。当然,其中很多只是随口的玩笑,一笑而过,不要当真,也不要抱怨。好了,今天就直接说正题吧。前端需要了解运维的一些Nginx用法。内容不多,随便看看。这两个功能足够工作了,那我们先来看一个问题,什么是反向代理和负载均衡。什么是反向代理和负载均衡?什么是反向代理?当我们有一个服务器集群,并且服务器集群中的每台服务器的内容都一样的时候,我们想直接从个人电脑访问服务器集群服务器的时候,是访问不到的,集群必须通过第三方服务器访问。这个时候我们通过第三方服务器访问服务器集群的内容,但是不知道是哪个服务器提供的内容。这种代理方式称为反向代理。什么是负载均衡公司会搭建很多服务器,这些服务器组成一个服务器集群,然后当用户访问一个网站时,首先访问一个中间服务器,然后让中间服务器选择一个压力较小的服务器进入服务器集群,然后将访问请求定向到选定的服务器。因此,每一次用户访问,都会保证服务器集群中每台服务器的压力趋于均衡,分担服务器压力,避免服务器崩溃。一句话:nginx会给你分配访问压力更小的服务器。Nginx反向代理和负载均衡的实现当用户访问一个网站时,首先访问nginx服务器,然后nginx服务器从服务器集群中选择一个压力较小的服务器,将访问请求定向到该服务器。在修改nginx配置方面,我从mac系统做一个简单的演示。如何安装也是根据mac。windows系统直接到Nginx官网下载安装即可。安装nginx1-进入homebrew官网,然后复制命令,预装需要的东西。当我们进入这个目录后,我们就可以对nginx进行操作了。接下来,我们将列出一些非常非常有用的命令。多打几遍,一定要记住。启动nginxnginx的常用nginx命令当你敲完nginx的5个键后,没有任何反应。此时只需要访问localhost:8080(默认)即可关闭nginx。如果出现下图,不要惊慌,因为之前启动过nginx,只需nginx-sstop,停止nginx服务,重新启动nginx,重启nginxnginx-sreload每次修改.conf文件,都需要重启nginx检查配置检查修改后的nginx.conf配置是否正确正常工作,没必要对nginx做太多修改。我们之所以修改nginx的配置是为了做一些反向代理。proxy_passNginx反向代理主要是通过proxy_pass配置的,在proxy_pass后面填写你项目开发机器的地址,正常格式为proxy_passURL。server{listen80;location/{proxy_passhttp://10.10.10.10:20186;}}Upstream模块实现负载均衡ip_hash指令server指令upstream指令及相关变量上面写的三个指令,我们直接通过代码一一分析。//修改nginx.confworker_processes1;events{worker_connections1024;}http{upstreamfirstdemo{server39.106.145.33;server47.93.6.93;}server{listen8080;location/{proxy_passhttp://firstdemo;}}}修改上面的nginx。conf就是上图中花圈里面的文件,主要修改nginx的配置在这里。化繁为简,直接用上面不到20行的代码替换原来nginx.conf中的内容。既然不到20行,就把里面对应的内容全部解释一下,只是为了有个了解。worker_processes工作进程数,与CPU核数相同。worker_connections每个进程允许的最大连接数。upstream模块的负载均衡依赖于它的语法格式:upstreamname{}中写的两台server分别对应不同的server服务器模块。反向代理listen监听端口号location/{}访问根路径proxy_passhttp://firstdemo,代理到firstdemo中的两台服务器。上面修改nginx.conf后,别忘了最重要的一步,重启nginx。然后再次访问localhost:8080,会看到如下页面:还有一个页面:每次刷新都会访问不同的服务器,这样就可以实现负载均衡。不过更应该做的是,用户第一次访问其中一个服务器后,下次访问时可以直接访问该服务器,不需要一直更改。那么ip_hash的威力就发挥出来了。//省略...upstreamfirstdemo{ip_hash;server39.106.145.33;server47.93.6.93;}ip_hash它的作用是记录你是否第一次访问服务器,然后再次访问服务器,例如,第一次访问是33服务器,以后的访问也会分配为33服务器访问。工作中简单使用公司开发项目的时候,遇到设计和产品走查环节的时候,不能每次都分配一个host。毕竟走过去既不友善又麻烦。所以,应该给他们一个直观的感觉,只要给个访问地址,就可以看到外观。给大家看一下,我在公司的时候用nginx做的反向代理配置,和我们上面的完全一样,只是加了一个server_name,用指定的域名访问就可以了。服务器{listen80;server_namechd.news.so.m.qss.test.so.com;auth_basicoff;location/{proxy_passhttp://10.10.10.10:20186;proxy_set_headerHost$host;proxy_redirectoff;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_connect_timeout60;proxy_read_timeout600;proxy_send_timeout600;}}修改nginx配置后不要忘记重启nginx才能生效,所以只需要访问地址chd.news.so.m.qss.test.so.com可以查看我的开发环境,进行走查。这是nginx***的功能。我与反向代理接触不多。毕竟我不是专业的运维出身,所以可比性差了很多。我知道一二,只是为了方便大家工作。再次感谢您的收看,哈哈!