写给后端的Nginx初级入门教程( 三 )


<h1>I am Hi<h1>啊,这样的话配置是不是很难啊?
你想多了,敲简单的 。
修改我们配置文件中的server快,如下:
server { listen 8888 ; ##设置我们nginx监听端口为8888 server_name [服务器的ip地址]; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location /hi/ { proxy_pass http://127.0.0.1:8080; ##需要代理的服务器地址 index index.html; }location /hello/ { proxy_pass http://127.0.0.1:8081; ##需要代理的服务器地址 index index.html; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }在浏览器中输入:服务器ip:8888/hi/hi.html
浏览器显示 I am hi 对应服务器端口为 8080
在浏览器中输入:服务器ip:8888/hello/hello.html
浏览器显示 I am hello 对应服务器端口为 8081
从而实现了针对不同url请求分发给不同服务器的功能配置 。
少侠,且慢,你是不是忘了什么东西,location /hello/ 是什么意思,只能这么写么?
当然不是 。学会location指令匹配路径,随便换姿势
location指令说明:
功能:用于匹配URL
语法如下:
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求 。2、~:用于表示 uri 包含正则表达式,并且区分大小写 。3、~*:用于表示 uri 包含正则表达式,并且不区分大小写 。4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配 。

注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识 。
到这里,关于nginx如何简单的配置一个反向代理服务器就大功告成了,下面我们来说一下怎么实现负载均衡的简单配置 。
4.2 nginx配置负载均衡
在nginx中配置负载均衡也是十分容易的,同时还支持了多种负载均衡策略供我们灵活选择 。首先依旧是准备两个tomcat服务器,一个端口为8080,一个端口为8081,这里呢,推荐大家用docker部署,太方便了,什么,不会docker,可以移步我的面向后端的docker初级入门教程,真的挺好用,省了很多工作量 。
然后修改我们的http块如下:
http {###此处省略一大堆没有改的配置 ##自定义我们的服务列表 upstream myserver{ server 127.0.0.1:8080; server 127.0.0.1:8090; } server { listen 8888 ; ##设置我们nginx监听端口为8888 server_name [服务器的ip地址]; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://myserver; ##叮,核心配置在这里 proxy_connect_timeout 10; #超时时间,单位秒 } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }}这就完了?当然还没有,之前就有说过,nginx提供了三种不同的负载均衡策略供我们灵活选择,分别是:
  • 轮询(默认方式): 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除 。
  • 用法:啥也不加,上文实例就是默认的方式,就是默认的
  • 权重(weight): weight 代表权重,默认为 1,权重越高被分配的客户端越多,权重越大,能力越大,责任越大,处理的请求就越多 。
  • 用法:
upstream myserver{ server 127.0.0.1:8080 weight =1; server 127.0.0.1:8090 weight =2; }
  • ip_hash:每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题 。
  • 用法:
upstream myserver{ ip_hash;#可与weight配合使用 server 127.0.0.1:8080 weight =1; server 127.0.0.1:8090 weight =2; }4.3 nginx配置动静分离
接下来说最后一个实例,动静分离的简单配置 。
等等,我记得明明是四个,明明还有一个正向代理呢?
这个,爱国守法,人人有责,有需要访问某些国内不能访问的网站需求的同学,可以自行下去查阅资料 。
至于怎么配置正向代理,咱也不知道,咱也不敢说,咱也不敢问 。
基础篇回顾:
动静分离就是把很少会发生修改的诸如图像,视频,css样式等静态资源文件放置在单独的服务器上,而动态请求则由另外一台服务器上进行,这样一来,负责动态请求的服务器则可以专注在动态请求的处理上,从而提高了我们程序的运行效率,与此同时,我们也可以针对我们的静态资源服务器做专属的优化,增加我们静态请求的响应速度 。


推荐阅读