`

nginx配置 笔记

 
阅读更多

   nginx本身拥有大量官方发布的模块和第三方模块,这些已有的模块可以帮助我们实现web服务器上很多的功能。使用这些模块时也只需要增加或修改一些配置项即可。

   总所周知,nginx是一个支持多进程的web服务器

 

  •    location 配置:

     正则location:

              ~和~* 是在使用正则表达式时的前缀,~ 表示区分大小写 ~* 不区分大小写

    普通location:

              包括带有前缀(=、^~、@)和无任何前缀的location

              

   nginx的匹配规则是先匹配 普通的location 再匹配 正则location ,而普通location内部匹配原则是 匹配最贴近的那个 简单一点儿就是匹配长度较长的那个。

 需要注意的是:当普通location匹配完成之后,nginx会继续匹配正则location,当匹配当第一个正则location就停止匹配,所以正则location之间是按照物理的定义顺序进行匹配的。

如果正则location匹配上了 就会覆盖刚才匹配的普通location,但是若未匹配上,就使用之前匹配上的普通location。

  但是如果我们不想匹配完普通location 再继续匹配正则location 怎么办呢?

  这时需要我们加上前缀 ^~ 或 =,它俩是有区别的:^~ 阻止了正则location的匹配,还支持最大匹配

  而= 阻止了正则location 必须严格精确匹配

 

综上所述,我们可以得到一个结论:正则匹配会让步 普通的精确匹配 但是会覆盖最大前缀的普通匹配

 

 此外,除了普通location和正则location外 ,还有一种“@”位前缀的location,@是用来定义named location,这种location不是处理普通请求的,而是用来专门处理内部重定向的(internally redirected) 也即 内部的forward动作。

  •   ngx_http_core_module模块常见变量

  ngx_http_core_module 模块在处理请求时,会有大量的变量。这些变量既可以被访问日志记录,又可以被其他nginx模块使用。

   $arg_PARAMETER    http请求中某个参数的值,例如/showcase?user=123 可以通过$arg_user 来取得123这个值。

   $args HTTP            http请求中的完整参数,例如/index.html?token=123&notice=456 中$args 表示“token=123&notice=456”

   $binary_remote_addr 二进制格式的客户端地址。例如 \xOA\xEOB\xOE

   $body_bytes_sent 表示向客户端发送的http响应中,包体部分的字节数

   $content_length 表示客户端请求头部中的Content-Length字段

   $content_type    表示客户端请求头部中的Content-type字段

   $cookie_COOKIE 表示客户端请求头部中的cookie字段

   $document_root  表示当前请求所使用的root配置项的值

   $uri 表示当前请求的URI不带任何参数

   $document_uri 与$uri含义相同

   $request_uri 表示客户端发来的原始请求URI,带完整的参数。$uri和$document_uri不一定是用户发来的原始请求,在内部重定向后可能是重定向后的URI,而$request_uri永远不会改变,始终是客户端的原始URI

   $host    表示客户端请求头中的Host字段。如果host字段不存在则以实际处理的server(虚拟主机)名称来代替。如果Host字段带有端口,如IP:PORT,那么host是去掉端口的IP值,$host是全小写的。这些特性与http_HEADER中的http_host不同,http_host只取出Host头部对应的值。

   $hostname  表示nginx所在机器的名称,与gethostbyname调用返回的值相同

   $http_HEADER 表示当前请求中相应的头部的值。例如,Host在头部对应的值 用$http_host表示

   $send_http_HEADER 表示返回客户端的HTTP响应中相应的头部值。HEADER名称全小写。例如,                     $send_http_content_length 表示返回响应Content-Type头部对应的值。

   $is_args   表示请求中的URI是否带参数,如果带参数,$is_args的值为?,如果不带参数,则是空字符串。

   $limit_rate   表示当前的限速是多少,0表示无限速。

   $nginx_version 表示当前nginx的版本号

   $query_string 请求URI中的参数,与$args相同,但是$query_string是只读的

   $remote_addr  表示客户端地址

   $remote_port 表示客户端连接使用的端口号

   $remote_user 表示使用Auth Basic Module时定义的用户名

   $request_filename 表示用户请求中的URI进过root或alias转换后的文件路径

   $request_body 表示HTTP请求中的包体,该参数只在proxy_pass或fastcgi_pass中有意义。

   $request_body_file  表示HTTP请求包体存储的临时文件名

   $request_completion  当请求全部完成时,其值为“ok”。若没有完成,就要返回客户端,则其值为空字符串;或者在断点续传等情况下使用HTTP range访问的并不是文件的最后一块,那么其值也是空字符串

   $request_method 表示HTTP请求的方法名,如GET、PUT、POST等

   $scheme 表示HTTP scheme,如在请求https://www.sonicery-d.com/中表示https

   $server_addr  表示服务器地址

   $server_name 表示服务器名称

   $server_port   表示服务器端口

   $server_protocol  表示服务器向客户端发送响应使用的协议,如 HTTP/1.0或HTTP/1.1

 

  待补充。。。

分享到:
评论

相关推荐

    nginx高级配置笔记

    nginx高级配置笔记

    nginx课程笔记文件.zip

    里面有关于nginx所有的配置具体的介绍,其中有nginx怎样配置负载均衡,图片服务器,资源压缩,黑白名单限制,websocket反向代理,rewrite重写规则,服务器缓存设置,ssl证书配置,keepalive部署nginx集群,openResty...

    nginx学习配置笔记_带书签

    学习的nginx配置信息,包括反向代理,负载均衡,和ip过滤。

    Nginx课件和笔记.rar

    08.nginx配置实例(反向代理准备工作) 09.nginx配置实例(反向代理实例一) 10.nginx配置实例(反向代理实例二) 11.nginx配置实例(负载均衡) 12.nginx配置实例(动静分离准备工作) 13.nginx配置实例(动静...

    Nginx安装及配置笔记

    Nginx安装及配置笔记,步骤过程非常详细

    nginx 笔记和资料

    关于nginx的一些资料,nginx 的安装,启动,Nginx的信号控制,Nginx配置等具体文档

    CentOS6环境FastDFS+Nginx安装配置笔记.pdf

    CentOS6环境FastDFS+Nginx安装配置笔记.pdf

    nginx学习笔记1

    安装 和使用安装常用命令配置文件nginx.conf配置文件三部分组成:全局块,event块,http块全局块:从配置文件开始到events块之间的内容,主要设

    nginx课堂笔记_nginx_citizent9g_

    nginx的常见配置,如反向代理,负载均衡,动静分离等常见配置详解

    nginx1.8和入门笔记.zip

    其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)...

    Nginx模块开发OpenResty简单使用笔记整理.zip

    **最牛**的还是由淘宝的工程师清无(王晓哲)和春来(章亦春)所开发的[nginx_lua_module]可以将Lua语言嵌入到Nginx配置中,从而利用Lua极大增强了Nginx本身的编程能力,甚至可以不用配合其它脚本语言(如PHP或...

    Web服务器三剑客运维配置实战 Nginx+JVM+Tomcat+HTTP协议.zip

    课程内容包括了Nginx进阶基础,Nginx配置提升,JVM虚拟机尝试,JVM运维实用排障工具,JVM监控工具,Tomcat配置,Tomcat运维与部署等Web服务器的必备运维部署技术。 ===============课程目录=============== (1)\...

    Web服务器三剑客运维配置实战 Nginx+JVM+Tomcat+HTTP协议 视频教程+笔记+课件+资料

    课程内容包括了Nginx进阶基础,Nginx配置提升,JVM虚拟机尝试,JVM运维实用排障工具,JVM监控工具,Tomcat配置,Tomcat运维与部署等Web服务器的必备运维部署技术。 (1)\笔记+课件+资料;目录中文件数:0个 (2)\...

    Nginx笔记+资料

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/...其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

    Centos7笔记之nginx的安装配置

    centos7下nginx的安装配置 (无坑版) 二、平台 [root@xserver ~]# cat /etc/redhat-release  CentOS Linux release 7.6.1810 (Core)   三、解析 1.Nginx主配置文件:/etc/nginx/nginx.conf 和conf.d/*.conf 2....

    nginx配置详解

    nginx配置的一些详细解释、也是自己的学习笔记、希望对大家有帮助~~

    ruby on rails环境搭建学习笔记;passenger+nginx环境配置

    本人学习ruby on rails 的开发和部署过程中的环境搭建的笔记 基本涵盖了ruby开发中用到的所有软件的安装 也给自己留个存档

    Nginx完整学习笔记.doc

    ngnix完整的系统学习资料,包括安装、部署、配置、调优、负载均衡、反向代理,location详细介绍

    docker部署nginx,挂载多个前端部署目录以及跨域问题解决方案.txt

    为了节约成本,很多时候一台server 的nginx可能要部署多个前端的情况,本实例是在docker环境下部署两个前端,同时处理前端调用后端跨域问题,本示例为阿里云centos7 系统docker20.10.6环境下nginx1.19.5版本 ...

    凝思系统-k8s部署笔记-nginx-mysql(内网环境).pdf

    k8s+docker部署nginx+mysql笔记记录适合内网环境,网上很多配置文件是错的,我这个实验了很多次,吃了很多亏。终于成功部署。

Global site tag (gtag.js) - Google Analytics