nginx
location
uri匹配规则
语法规则: location [=||*|^~] /uri/ {… }
首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。
当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
- = 开头表示精确匹配
- ^~ 非正则匹配
- ~ 正则匹配,区分大小写。
- ~* 正则匹配,不区分大小写。
- !~ 正则不匹配,区分大小写
- !~* 正则不匹配,不区分大小写
header设置
普通请求的Header
反向代理请求的Header
代理
绝对路径和相对路径
1.绝对路径,情况一:
访问路径:http://127.0.0.1/proxy/cuffs/css/toosimple.txt
代理路径:http://127.0.0.1:8080/cuffs/css/toosimple.txt
location /proxy/ {
proxy_pass http://10.0.0.1:8080/;
}
访问路径:http://127.0.0.1/proxy/cuffs/css/toosimple.txt
代理路径:http://127.0.0.1:8080/static01/cuffs/css/toosimple.txt
location /proxy/ {
proxy_pass http://10.0.0.1:8080/static01/;
}
3.相对路径:
访问路径:http://127.0.0.1/proxy/cuffs/css/toosimple.txt
代理路径:http://127.0.0.1:8080/proxy/cuffs/css/toosimple.txt
location /proxy/ {
proxy_pass http://10.0.0.1:8080;
}
访问路径:http://127.0.0.1/proxy/cuffs/css/toosimple.txt
代理路径:http://10.0.0.1:8080/static01cuffs/css/toosimple.txt
location /proxy/ {
proxy_pass http://10.0.0.1:8080/static01;
}
本机文件配置
全局参数
* $args 请求中的参数,如www.123.com/1.php?a=1&b=2的$args就是a=1&b=2
* $body_bytes_sent 服务器发送给客户端的响应body字节数
* $content_length HTTP请求信息里的"Content-Length"
* $conten_type HTTP请求信息里的"Content-Type"
* $document_root nginx虚拟主机配置文件中的root参数对应的值
* $document_uri 当前请求中不包含指令的URI,如www.123.com/1.php?a=1&b=2的$document_uri就是1.php,不包含后面的参数
* $http_referer 记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置
* $host 主机头,也就是域名
* $http_user_agent 客户端的详细信息,也就是浏览器的标识,用curl -A可以指定
* $http_cookie 客户端的cookie信息
* $http_x_forwarded_for 当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置
* $limit_rate 如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0
* $remote_addr 客户端的公网ip
* $remote_port 客户端的port
* $remote_user 如果nginx有配置认证,该变量代表客户端认证的用户名
* $request 请求的URI和HTTP协议,如“GET /article-10000.html HTTP/1.1”
* $request_body_file 做反向代理时发给后端服务器的本地资源的名称
* $request_method 请求资源的方式,GET/PUT/DELETE等
* $request_filename 当前请求的资源文件的路径名称,相当于是$document_root/$document_uri的组合
* $request_uri 请求的链接,包括$document_uri和$args
* $scheme 请求的协议,如ftp,http,https
* $server_protocol 客户端请求资源使用的协议的版本,如HTTP/1.0,HTTP/1.1,HTTP/2.0等
* $server_addr 服务器IP地址
* $server_name 服务器的主机名
* $server_port 服务器的端口号
* $status http状态码,记录请求返回的状态码,例如:200、301、404等
* $uri 和$document_uri相同
* $http_referer 客户端请求时的referer,通俗讲就是该请求是通过哪个链接跳过来的,用curl -e可以指定
* $time_local 记录访问时间与时区,如18/Jul/2014:17:00:01 +0800
网友评论