Nginx学习

发布时间:2024年01月11日

在Nginx配置中,以$符号开头的变量通常是内置变量或者从请求上下文中提取的变量。这些变量用于获取请求的各种信息,例如请求头、URI等。以下是一些常见的以$符号开头的变量:

  1. $uri:请求中的URI(不包括查询字符串)。
  2. $document_root:当前请求的文档根目录。
  3. $request_uri:包含完整请求URI的字符串。
  4. $query_string:请求中的查询字符串。
  5. $host:请求的主机头。
  6. $http_user_agent:客户端的User-Agent头。
  7. $request_method:请求方法,如GET、POST等。
  8. $remote_addr:客户端的IP地址。
  9. $server_name:当前请求的服务器名。
  10. $server_port:当前请求的服务器端口。

这些变量可以用于创建动态的Nginx配置,比如根据请求的URI执行不同的操作,或者根据客户端的IP地址进行不同的处理。

你也可以自定义变量,例如:

set $my_custom_variable "Hello, World!";

然后,你可以在配置中使用 $my_custom_variable 引用这个自定义变量。

这些变量的详细说明和使用方法可以在Nginx官方文档中找到:Nginx Variables

Nginx中的字符:

  1. \,反斜杠一般作为转义字符,\.jpg ,这里使用了\进行转义,因为.在正则表达式中是一个特殊字符,而我们想要匹配实际的点
  2. = 表示精确匹配
  3. ~ 正则匹配(区分大小写)
  4. ~* 正则匹配(不区分大小写)
  5. ^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格,即所见即所得)
  6. !~ 和 !~* 分别为区分大小写不匹配及不区分大小写不匹配 的正则
  7. / 任何请求都会匹配?,优先级最低,作为兜底存在,其他规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在

示例:

location = / {  
   #规则A  
}  
location = /login {  
   #规则B  
}  
location ^~ /static/ {  
   #规则C  
}  
location ~ \.(gif|jpg|png|js|css)$ {  
   #规则D  
}  
location ~* \.png$ {  
   #规则E  
}  
location !~ \.xhtml$ {  
   #规则F  
}  
location !~* \.xhtml$ {  
   #规则G  
}  
location / {  
   #规则H  
}  

动静分离配置:

静态动态分离,除了静态资源以外的请求都交给Tomcat处理?

location / {  
    proxy_pass http://[tomcatip]:[80]
}  

location ^~ /static/ {  
    root /webroot/static/;  
}  

location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {  
    root /webroot/res/;  
}  

?

在Nginx中,/$1 是一个用于重定向的变量。通常,$1 表示匹配的第一个正则表达式捕获组的值。这通常用于在 location 中使用正则表达式来捕获部分 URI,并在重定向时将其包含在新的 URI 中。

例如:

 

nginxCopy code

location ~ ^/user/(\w+)$ { rewrite ^/user/(\w+)$ /profile/$1 permanent; }

在这个例子中,如果请求的 URI 匹配正则表达式 ^/user/(\w+)$,其中 (\w+) 是一个捕获组,表示一个或多个单词字符,那么 Nginx 将使用 rewrite 将其重定向到 /profile/$1,其中 $1 包含捕获的用户名部分。

所以,/$1 是在重定向过程中用于引用正则表达式捕获组的值的一种方式。

请注意,$1 只有在正则表达式中使用捕获组时才有意义,而且这只是一个示例。具体使用可能取决于你的实际需求和项目结构

?

location ~ ^/user/(.*)$ {
    # 处理匹配的请求,可以使用 $1 引用捕获组的值
}

文章来源:https://blog.csdn.net/flybone7/article/details/135529934
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。