- 全局块
- events块
- http块
准备工作
打开Nginx的配置文件
vim nginx.conf
全局块
主要设置一些影响Nginx服务器整体运行的配置指令或一些文件的存放路径。如:`
worker_processes auto; #控制nginx的最大并发处理数量,如 :1 随着数字的增大,nginx最大并发处理数量也在增大
error_log /var/log/nginx/error.log; #nginx异常日志的存放位置
Events块
主要设置nginx服务器与用户的最大网络连接数量。如
events {
worker_connections 1024; #支持的最大连接数量
}
Http块
http块:即一个http处理模块,可进行http的相关参数配置,内可以包含多个server块;
server块:即是一个虚拟主机,需配置域名和端口,也只处理对应主机域名的http请求,内可包含多个location块;
location块:对应具体的路径请求(http请求)。
反向代理
单个代理对象反向代理的实现
server {
listen 80 default_server; #监听访问的端口号
server_name 192.168.139.128; #监听访问的Ip地址
location / {
proxy_pass http://localhost:8080; #反向代理的目标ip端口号
}
#80与8080端口号已对外开放,可访问
实际访问效果就是在未修改tomcat的server文件情况下,访问80端口,被代理访问到了8080端口
当反向代理的对象为多个的时候,只需要在server中新增多个location即可。
如:当使用浏览器访问9000端口下的
http://192.168.139.128:9000/porxy1/ 等价于http://localhost:8081/porxy1/;
http://192.168.139.128:9000/porxy2/ 等价于http://localhost:8080/porxy2;
配置如下:
server {
listen 9000 ;
server_name 192.168.139.128;
location ~ /porxy1/ {
proxy_pass http://localhost:8081;
}
location ~ /porxy2/ {
proxy_pass http://localhost:8080;
}
}
负载均衡
负载均衡使用的情况:多个用户请求访问服务器,nginx服务器动态的将访问的请求,分发到要访问的服务器当中。
主要设置,集群下,相同实现功能的ip地址与端口号
upstream testServer{ #testServer为自定义命名
server 192.168.139.128:8080; #分发的ip地址与端口号
server 192.168.139.128:8081;
}
并修改server下的location设置
location / {
proxy_pass http://testServer;
}
在ip为192.168.139.128下部署了两个tomcat端口号分别为8080与8081。并设置了相同的项目test,测试结果如下
刷新界面,nginx服务器使用了默认的轮询分配的方式,向8080端口与8081端口提交请求。
nginx常用的分配策略
- 轮询(默认)
每个请求,根据请求的时间逐一分配到不同的服务器当中。如果其中有服务器shutdown,则会自动跳过该服务器。 - weigth
权重分配,权重越大,分配的越多
- ip_hash
按请求访问的ip地址的hash不同进行分配,这样每个客户固定访问一个服务器。
- fair
按后端服务器的响应时间进行分配,响应时间短的优先分配。
动静分离
静态资源通过nginx进行分配
在/usr目录下新建data目录,并在其中创建文件
image存放图片,www存放html页面
监听端口号与访问ip地址不变,新增两个location拦截。
拦截以’ /www/ ’ 下的文件 拦截’ /image/ '下的文件
测试
访问 http://192.168.139.128/www/1.html //乱是因为中文编码问题
访问 http://192.168.139.128/image/