Nginx简介
web 反向代理 缓存
优点:
简单稳定
模块
rewrite
Nginx部署
安装:
apt-get install -y build-essential libssl-dev libtool libpcre3 libpcre3-dev make openssl zlib1g-dev
apt-get install nginx -y
基本的目录:
/etc/nginx
/var/www/html /usr/share/nginx/html
/var/log/html
/usr/sbin/nginx
配置文件:
/etc/nginx/nginx.conf
全局配置段
http配置段
server配置段 项目、应用 一个域名
location配置段 url
http >= server(>= location)
访问原理:
1 浏览器拆分地址 地址+路径
2 根据地址找服务器
3 把路径交给指定server的location去处理
4 location找到对应文件后返回给浏览器
nginx请求处理:master /worker
配置详解
全局配置段
work_processes
events{work_connections}
http配置段
sendfile
gzip
server配置段
server{
listen 指定监听地址
server_name 指定主机名 -- 一般用项目域名来代替
}
优先级:
listen > server_name
示例:
server {
listen 192.168.8.14:99;
server_name www.baidu.com;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
location / {
}
}
location配置段
location optional_modifier location_match { ... }
optional_modifier 匹配条件
正则 、普通
优先级:
精确 > 优先 > 正则 > 通用
location_match 匹配样式
后缀 ***
路径 **
匹配样式中的 /
没有 / 表示文件
有 / 表示目录
示例:
参考下发的配置文件示例
root 相对路径
alias 绝对路径
Nginx进阶知识
反向代理
正向 保护的是后端的客户
反向 保护的是后端的服务器
反向代理的配置;
proxy_pass
proxy_set_header
proxy_pass的时候,后面的url有无"/"是不一样的
示例代码:
location /html/ {
1 proxy_pass http://proxy.com;
2 proxy_pass http://proxy.com/;
}
假设我们访问的url是 http://domain.com/html/test.js,如何理解上述两种proxy_pass的区别呢?
对于 1 来说 proxy.com后面没有"/",表示"/html/" 请求(包括自己)后续的路径及其参数等关键字都由http://a.com/来处理,代理后的样式如下:
http://proxy.com/html/test.js
对于 2 来所 proxy.com后面有"/",表示"/html/" 请求后续的路径及其参数等关键字都由http://a.com/来处理,代理后的样式如下:
http://proxy.com/test.js
负载均衡
proxy_pass 针对的是单个
upstream
server 指令
upstream 状态:
手工
down
自动:
backup
max_fails
fail_timeout
示例:
参考下发的配置文件示例
调度策略
内置策略
轮训 默认
加权轮训
哈希
ip_hash
最小链接
cookie
扩展策略
自定义
第三方: fair url_hash
示例:
参考下发的配置文件示例
日志解析
目的:
1 日志的定制 -- 未来项目的监控
2 学习nginx内置变量 --- 用户请求的精细化管理
日志格式
定义格式
log_format 日志格式名称 "nginx内置变量自定义组合"
使用格式
access_log 日志路径 日志格式名称
日志实践(反向代理获取真实的客户端IP)
步骤:
1 定制日志格式
2 反向代理服务器设置相关的属性配置
3 真实后端主机使用相关属性
示例:
参考下发的配置文件示例
URL重写
场景: 用户请求的定制分发
规则:
rewrite 正则 重写样式 标签
正则作用的对象是 原来请求中的路径
重写样式的对象是 用户最后看到的样式
标签:
last 正则
break 优先正则
redirect
permanent
if 指令
场景:用户请求的精细分发
if (内置变量 符号 值) {
...
}
if 实践 防盗链
$invalid_referer
curl
-I
-H
原文:https://www.cnblogs.com/WhiteCoder/p/10549113.html