Nginx 的这些妙用,你都 get 到了吗?( 四 )

Nginx 配置实例
反向代理 Demo 1
实现效果:使用 Nginx 反向代理,访问 test.com 直接跳转到自己的机器 127.0.0.1:8080
①启动一个 Tomcat,浏览器地址栏输入 127.0.0.1:8080 。
出现如下界面:

Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
②通过修改本地 Host 文件(C:windowsSystem32driversetc),添加127.0.0.1 www.12345.com 将 www.12345.com 映射到自己的机器 IP 上 。
③配置完成之后,我们便可以通过 www.test.com:8080 访问到第一步出现的 Tomcat 初始界面 。
那么如何只需要输入 www.12345.com 便可以跳转到 Tomcat 初始界面呢?便用到 Nginx 的反向代理 。
④修改 nginx.conf 配置文件,增加如下配置 proxy_pass:
server{listen80;server_namelocalhost;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/{proxy_passhttp://127.0.0.1:8080;}⑤如上配置,我们监听 80 端口,访问域名为 www.12345.com,不加端口号时默认为 80 端口,故访问该域名时会跳转到 127.0.0.1:8080 路径上 。
在浏览器端输入 www.12345.com 结果如下:
Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
反向代理 Demo 2
实现效果:使用 Nginx 反向代理,根据访问的路径跳转到不同端口的服务中:
  • 访问 http://127.0.0.1/java/ 直接跳转到 127.0.0.1:8080
  • 访问 http://127.0.0.1/egg/ 直接跳转到 127.0.0.1:8081
①在服务器上起两个 Tomcat,修改其中一个端口号为 8081 。
在 tomcat/webapps/ 目录下各加两个文件夹,并随便写个 HTML 页面,我建的是 java/index.html 和 egg/index.html 。
②修改 nginx.conf,在 HTTP 块中添加 serve{}:
server{listen80;server_namelocalhost;location~/java/{proxy_passhttp://127.0.0.1:8080;}location/egg/{proxy_passhttp://127.0.0.1:8081;}}③重启 Nginx,验证效果:
Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
Nginx 配置:负载均衡
随着互联网信息的爆炸性增长,负载均衡(Load Balance)已经不再是一个很陌生的话题 。
顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验 。
快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲 。
这使得负载均衡软件大受欢迎,Nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务 。
Nginx 的负载均衡是 Proxy 模块和 Upstream 模块搭配实现的 。Upstream模块将会启用一个新的配置区段,在该区段定义了一组上游服务器 。
实现效果:配置负载均衡 。
①同时启动两个 Tomcat(为了方便验证效果,修改 Tomcat 端口号的同时,顺便将 Tomcat 默认欢迎页面 apache-tomcat-9.0.29/webapps/ROOR 目录下的 index.jsp 修改下,看下 8081 欢迎页的“蛋蛋”没):
Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
②修改 nginx.conf:
http{upstreammyserver{serverlocalhost:8080;serverlocalhost:8081;}server{listen80;location/{proxy_passhttp://myserver;}}}③重启 Nginx,验证效果(默认轮询的方式,每次打开新窗口,8080 和 8081 会交替出现,同一个窗口的话需要关闭浏览器缓存) 。
Nginx 分配策略:
  • 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 Down 掉,能自动剔除 。
  • Weight 代表权重,默认为 1,权重越高被分配的客户端越多,指定轮询几率,Weight 和访问比率成正比,用于后端服务器性能不均的情况 。
例如:
upstreamserver_pool{server192.168.5.21weight=10;server192.168.5.22weight=10;}ip_hash 每个请求按访问 IP 的 Hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 Session 的问题 。
例如:
upstreamserver_pool{ip_hash;server192.168.5.21:80;server192.168.5.22:80;}Fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配 。
upstreamserver_pool{server192.168.5.21:80;server192.168.5.22:80;fair;}Nginx 配置:动静分离
Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离 。
严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面 。


推荐阅读