Nignx的文件存放在 /usr/local/ nginx
nginx 重启操作 systemctl reload nginx.service
一、Nginx的大概流程
二、Nginx的配置文件
worker_processes 1; 默认为1,表示开启一个业务进程
worker_connections 1024; 单个业务进程可接受连接数
include mime.types; 引入http mime类型,其中的mime.types文件
default_type application/octet-stream; 如果mime类型没匹配上,默认使用二进制流的方式传输。
sendfile on; 使用linux的 sendfile(socket, file, len) 高效网络传输,也就是数据0拷贝。
未开启sendfile
开启sendfile
虚拟主机配置
自定义:
systemctl reload nginx.service 重启nginx
效果
server_name的多种匹配方法
1.可以写多个主机名
2 .支持通配符的形式
反向代理
正向代理就是你去找中间人代理买东西,购买人不露面,反向代理就是代理服务器,卖家不想暴露自己的真实IP,就推出一个代理商,你向代理商购买,不直接向公司连接
如何使用:使用关键词proxy_pass
注意点:http不是https ,后面有分号
效果
负载均衡(轮询)
负载均衡基础配置
基础配置-想达到的效果就是雨露均沾,访问192.168.226.128,会一会跳转到192.168.226.129,一会跳转到192.168.226.130
在192.168.226.128的nginx的配置文件中
效果:
负载均衡高级配置-权重
weight(权重) 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream httpd {
server 127.0.0.1:8050 weight=10 down;
server 127.0.0.1:8060 weight=1;
server 127.0.0.1:8060 weight=1 backup;
}
down:表示当前的server暂时不参与负载
weight:默认为1.weight越大,负载的权重就越大。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。
单独的轮询肯定是不行的,因为它无法保存会话
动静分离
基础的反向代理,我们要去Tomcat中访问静态资源
动静分离就是将tomcat中的静态资源前置到nginx里
方法一:静态资源不是很多的情况下
本次使用的网页对应的文件夹内容:
在主机ip为192.168.226.128中配置,当访问http://192.168.226.128:8080/时,会跳转到对应网页
效果
删除所有静态文件之后的页面效果和文件夹
并且使用反向代理,在主机ip为192.168.226.129,并将静态资源放置到该nginx中进行加载
动静分离后的效果
优化使用正则表达式:
UrlRewrite
作用:我们使用/index.jsp?pageNum=3 进行跳转,跳转到第三页,感觉太长了
希望在地址栏输入/3.html就能进行跳转
方法:
rewrite是实现URL重写的关键指令,根据regex (正则表达式)部分内容, 重定向到replacement,结尾是flag标记。
rewrite <regex> <replacement> [flag];
关键字 正则 替代内容 flag标记
正则:perl兼容正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成replacement
flag标记:rewrite支持的flag标记
rewrite参数的标签段位置: server,location,if
flag标记说明:
last #本条规则匹配完成后,继续向下匹配新的location URI规则
break #本条规则匹配完成即终止,不再匹配后面的任何规则 break的意思类似于switch..case..中的break
redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
例子:
网关服务器
当一个nginx服务器有多个功能(比如反向代理,rewrite,动静分离,负载均衡)的时候我们称他为网关服务器
操作一:原本我们设置的是使用192.168.226.129反向代理192.168.226.128并且实现动静分离,现在我们希望192.168.226.128只能通过内网(192.168.226.129)进行访问,外网不可以访问
首先开启192.168.226.128的防火墙:
systemctl start firewalld
其次指定端口和ip访问:只允许192.168.226.129:8080访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.226.129"port protocol="tcp" port="8080" accept"
最后重启防火墙
systemctl restart firewalld
移除规则
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.226.129"
port protocol="tcp" port="8080" accept"
操作二:加上负载均衡
防盗链
现在192.168.226.129(网关服务器) 反向代理 192.168.226.128
192.168.226.130反向代理192.168.226.129,这样192.168.226.130也可以正常访问192.168.226.128
如果使用192.168.226.130访问,那么静态资源的referer就是http://192.168.226.130/
我们希望只有referer是http://192.168.226.129/
的网页才能访问http://192.168.226.128/静态资源
方法:在网关服务器192.168.226.129中配置,在希望防盗链的静态资源的local中添加
valid_referers 192.168.226.129;
if ($invalid_referer) {
return 403;
}
效果:
192.168.226.130的效果
192.168.226.129的效果-正常访问
但是如果是下载链接之类的,可以在其他软件中打开:加上none
location ~*/(api|images|plugins|styles){
valid_referers none 192.168.226.129;
if ($invalid_referer) {
return 403;
}
root html;
index index.html index.htm;
}
总结:防盗链配置
valid_referers none | blocked | server_names | strings ....;
none, 如果referer不存在那么就可以访问成功,如果referer错误那么访问不成功。
blocked,检测 Referer 头域的值被防火墙或者代理服务器删除或伪装的情况。这种情况该头域的值不以 “http://” 或 “https://” 开头。
server_names ,设置一个或多个 URL ,检测 Referer 头域的值是否是这些 URL 中的某一个。
使用eurl
安装url
yum install -y curl
使用url测试
curl -I http://192.168.44.101/img/logo.png
带引用
curl -e "http://baidu.com" -I http://192.168.44.101/img/logo.png
防盗链-返回指定页面/图片
①返回指定错误页面-403.html
方法一:return 错误码
效果:
方法二:使用rewrite,是所有地址全部映射到403.html 。break的意思类似于switch..case..中的break
②直接显示图片
使用正则匹配
效果:
Keepalive
master配置:
启动
systemctl start keepalived.service
查看状态
systemctl status keepalived.service
查看虚拟ip
备用机keepalived配置
查看虚拟ip
测试keepalived 中的ip漂移
此我们去ping这个虚拟ip
然后突然把主机关闭
那么备用机就会开启
然后我们再在备用机中使用ip addr 查看虚拟ip,成功!
HTTP
非对称加密