可锐资源网

技术资源分享平台,提供编程学习、网站建设、脚本开发教程

工作笔记之-nginx|location配置(nginx配置文件中的location)

location配置参考

  1. location 配置方法 :

o 前缀 + uri(字符串/正则表达式):location [ = | ~ | ~* | ^~ ] uri { ... }

o @ + namelocation @name { ... }

  1. 前缀含义:
    a. = :精确匹配(必须全部相等)
location = / {
#规则
}

b. ~ :大小写敏感:

location ~ /Example/ {
#规则
}
#请求示例#http://www.example.com/Example/ [成功]
#http://www.example.com/example/ [失败]

c. ~* :忽略大小写

location ~* /Example/ {
#规则
}
# 则会忽略 uri 部分的大小写#http://www.example.com/Example/ [成功]
#http://www.example.com/example/ [成功]

d. ^~ :只需匹配uri部分

location ^~ /img/ {
#规则
}
#以 /img/ 开头的请求,都会匹配上#http://www.example.com/img/a.jpg [成功]
#http://www.example.com/img/b.mp4 [成功]

e. @ :内部服务跳转

location /img/ {
error_page 404 @img_err;
}
location @img_err {
# 规则
}
#以 /img/ 开头的请求,如果链接的状态为 404。则会匹配到 @img_err 这条规则上。

f. / :通用匹配

location /testwx {
proxy_pass http://127.0.0.1:8080/wx;
proxy_cookie_path /wx /testwx;
}

nginx处理get请求参数丢失

  • 使用内置变量$args将请求参数传递到后端
location ~ ^/(.+)$ {
   proxy_pass http://xx.xx.xx/$1?$args;
}

nginx常用变量参考

$arg_PARAMETER 这个变量包含GET请求中,如果有变量PARAMETER时的值。

$args 这个变量相当于请求行中(GET请求)的参数,例如foo=123&bar=blahblah 。

$binary_remote_addr 二进制的客户地址。

$body_bytes_sent 响应时送出的body字节数数量。即使连接中断,这个数据也是精确的。

$content_length 请求头中的Content-length字段。

$content_type 请求头中的Content-Type字段。

$cookie_COOKIE cookie COOKIE变量的值。

$document_root 当前请求在root指令中指定的值。

$host 请求主机头字段,否则为服务器名称。

$is_args 如果有$args参数,这个变量等于”?”,否则等于”",空值。

$http_user_agent 客户端agent信息。

$http_cookie 客户端cookie信息。

$limit_rate 这个变量可以限制连接速率。

$request_body_file 客户端请求主体信息的临时文件名。

$request_method 客户端请求方法,通常为GET或POST。

$remote_addr 客户端的IP地址。

$remote_port 客户端的端口。

$remote_user 已经经过Auth Basic Module验证的用户名。

$request_completion 如果请求结束,设置为OK. 当请求未结束或如果该请求不是请求链串的最后一个时,为空(Empty)。

$request_filename 当前请求的文件路径,由root或alias指令与URI请求生成。

$request_uri #包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。不能修改。

$scheme HTTP方法(如http,https)。

$server_protocol 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。

$server_addr 服务器地址,在完成一次系统调用后可以确定这个值。

$server_name 服务器名称/绑定的域名。

$server_port #请求到达服务器的端口号。

$uri 不带请求参数的当前URI,uri不包含主机名,如”/foo/bar.html”。该值有可能和request_uri 不一致。request_uri是浏览器发过来的值。该值是rewrite后的值。例如做了internal redirects后。

注意:内部变量$request_uri$uri,$query_string是不可以直接修改的。
并且$request_uri 能够收到完整的请求链接

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言