其他配置
nginx是主进程+工作进程/子进程模式
worker_processes 1; 工作进程数量 按cpu的总核心调整
worker_cpu_affinity 0010 0100 1000; CPU的亲和力
worker_connections 1024; 一个工作进程的并发数
访问控制只允许本机访问a目录其他机器拒绝访问**
location /a {
allow 127.0.0.1
allow 192.168.10.42
deny all;
return http://www.jd.com
}
目录用户验证:任何人都可以访问,但是需要凭用户密码才能访问
location /b {
auth_basic “验证码”
auth_basic_user_file /etc/nginx/htpasswd;
}
设置日志格式
log_format name '[$time_local] $remote_addr "$request" $status'
server {
listen 80;
server_name localhost;
charset utf-8;
access_log logs/host.access.log name;
location…….
}
设置防盗链
#location /c {
location ~* \.(png|gif|bmp)$ {
valid_referers none blocked *.ayitula.com; --->解析:代表referers为none,或者是 *.ayitula.com则正常跳转,放着就返回403
if ($invalid_referer){
return 403;
}
}
反向代理
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务器接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机
location / {
proxy_pass http://118.190.209.153:4000; --->解析:匹配到这里就会转发后端该地址作处理
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
作限速
location /abc {
limit_req zone=name burst=5 nodelay;
limit_conn addr 1; ---->每个ip地址只能有一个tcp连接;
limit_rate 100k; ----->限制下载速度为100K;
}
URL模块语法,rewrite重定向URL
将http://www.ayitula 重写为 http://avitula.com/baism
locatin / {
set $name baism;
rewite ^(.*)$http://ayitula.com/$name;
}
总结:
proxy_pass和rewrite的区别:
1.proxy_pass相对于用户来说是无感的,相当于代理,把请求装发到后端做处理
2.rewrite会跳转到其他地址,状态码3xx,是url重定向,把请求转发到其他u
长连接
http协议属于TCP协议
优化目标:减少三次握手和四次断开的次数
keepalive_timeout 5; 长连接时间
keepalive_requests 8192; 每个长连接接受最大请求数
压缩
gzip on;
启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;
gzip压缩级别,1-9,数字越大压缩的越好,也越占用cpu时间,
gzip_comp_level 1;
进行压缩的文件类型
gzip_types test/plain application/javascript …….
是否在http header 中添加Vary:Accept-Encoding,建议开启
gzip_vary on;
客户端缓存
location ~* \.(png|gif)${
expries 1h;
}
Nginx集群
1.集群中Nginx扮演的角色是:分发器
2.任务:接受请求、分发请求、响应请求
3.功能模块:
ngx_http_upstream_module 基于应用层分发模块
ngx_stream_core_module 基于传输层分发模块
4.nginx集群实际上是:虚拟主机+反向代理+upstream分发模块
虚拟主机:接受和响应请求
反向代理:待用户去数据服务器拿数据
upstream:告诉nginx去那个数据服服务器拿数据
5.upstream module(静态的话可以选1和2,动态选3)
-
轮询(默认)
2)weight
3)ip_hash
4)fair(第三方)
5)url_hash(第三方)
-
基于不同请求头的分发
host、开发语言、浏览器、基于原ip
keepalvied高可用(在代理服务器上安装就可以了,后端服务器不是作为代理服务器,无需装)
keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,keepalvied将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后keepalvied自动将服务器加入到服务器群众,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
一个监控+自愈的软件s