目录
一、服务启动命令
二、Nginx入门
2.1.运行原理
2.2.Nginx配置文件
2.3.虚拟主机与域名解析
2.3.1.虚拟主机
2.3.2.域名解析规则
我们需要注意的是servername匹配分先后顺序,写在前面的匹配上就不会继续往下匹配了。
2.4.反向代理与正向代理
2.4.1.反向代理
2.4.2.正向代理
2.4.3.nginx实现反向代理
2.5.基于反向代理的负载均衡
2.5.1.轮询
2.5.2.weight(权重)
2.5.3.ip_hash
2.5.4.least_conn
2.5.5.url_hash
2.5.6.fair
2.6.动静分离
2.6.1.配置方法
2.6.2.location匹配顺序
2.7.URLRewrite
2.7.1.实例
2.7.2.rewrite语法格式及参数语法
2.7.3.URLRewrite + 负载均衡
2.8.防盗链
2.9.高可用场景
启动服务 systemctl start nginx.service
查看服务 systemctl status nginx.service
设置开机启动 systemctl enable nginx.service
修改配置后重新加载 systemctl reload nginx
重启服务 systemctl restart nginx
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm; #访问80端口,找到nginx目录下的html目录下的index.html
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
配置讲解:
worker_processes 1:默认为1,表示开启一个业务进程
worker_connections 1024:单个业务进程可接受连接数
include mime.types:引入http mime类型
default_type application/octet-stream:如果mime类型没匹配上,默认使用二进制流的方式传输。
sendfile on:使用linux的 sendfile(socket, file, len) 高效网络传输,也就是数据0拷贝。
keepalive_timeout 65:保持连接,超时时间。
server: {
listen 80; 监听端口号
server_name localhost; #域名、主机名
location / { 匹配路径
root html; 文件根目录
index index.html index.htm; 默认页名称
}
error_page 500 502 503 504 /50x.html; 报错编码对应页面
location = /50x.html {
root html;
}
}
原本一台服务器只能对应一个站点,通过虚拟主机技术可以虚拟化成多个站点同时对外提供服务
可以在同一servername中匹配多个域名
完整匹配 server_name vod.mmban.com www1.mmban.com;
通配符匹配 server_name *.mmban.com
通配符结束匹配 server_name vod.*;
正则匹配 server_name ~^[0-9]+\.mmban\.com$;
反向代理,指的是浏览器/客户端
并不知道自己要访问具体哪台目标服务器
,只知道去访问代理服务器
,代理服务器
再通过反向代理 +负载均衡
实现请求分发到应用服务器
的一种代理服务。
反向代理服务的特点是代理服务器
代理的对象是应用服务器
,也就是对于浏览器/客户端
来说应用服务器
是隐藏的
正向代理,指的是通过代理服务器
代理浏览器/客户端
去重定向请求访问到目标服务器
的一种代理服务。
正向代理服务的特点是代理服务器
代理的对象是浏览器/客户端
,也就是对于目标服务器
来说浏览器/客户端
是隐藏的。
使用proxy_pass
浏览器访问localhost就会跳转到 http://www.baidu.com,同时域名没有变化(不支持https)可以有多个server。然后根据策略、调度。
负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡
默认情况下使用轮询方式,逐一转发,这种方式适用于无状态请求。
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
down:表示当前的server暂时不参与负载
weight:默认为1.weight越大,负载的权重就越大。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。
max_fails : 请求失败次数限制
fail_timeout : 经过max_fails后服务暂停时间
max_conns : 限制最大的连接数
加权轮询是如何实现的?
根据客户端的ip地址转发同一台服务器,可以保持回话。
最少连接访问
根据用户访问的url定向转发请求
根据后端服务器响应时间转发请求
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路
先将静态文件(css、img、js)传入nginx的html目录下(/usr/local/nginx/html)
rewrite是实现URL重写的关键指令,根据regex (正则表达式)部分内容, 重定向到replacement,结尾是flag标记。
rewrite
关键字 正则 替代内容 flag标记
其中:
1)关键字:其中关键字error_log不能改变
2)正则:perl兼容正则表达式语句进行规则匹配
3)替代内容:将正则匹配的内容替换成replacement
4)flag标记:rewrite支持的flag标记
rewrite参数的标签段位置: server,location,if
flag标记说明:
ast :本条规则匹配完成后,继续向下匹配新的location URI规则
break :本条规则匹配完成即终止,不再匹配后面的任何规则
redirect :返回302临时重定向,浏览器地址会显示跳转后的URL地址 (防爬虫)
permanent :返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
实例:
安装 keepalived