zoukankan      html  css  js  c++  java
  • 【Nginx】 中的配置命令

    一、location

    1.1 概述

      location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。

    1.2 location的语法

    1. =开头表示精确匹配
    2. ^~ 开头表示uri以某个常规字符串开头,不是正则匹配
    3. ~ 开头表示区分大小写的正则匹配;
    4. ~* 开头表示不区分大小写的正则匹配
    5. / 通用匹配, 如果没有其它匹配,任何请求都会匹配到

    1.3 Location正则案例

    1. 精确匹配,/后面不能带任何字符
    server {
        listen       80;
        server_name  www.haoworld.cn;
        #精确匹配,注解后面不能带任何字符
        location =/ {
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }  
    }
    
    1. 匹配所有以/开头请求
    server {
        listen       80;
        server_name  www.haoworld.cn;
       #匹配所有以/开头请求 
        location / {
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }
    }
    
    1. 以开头/hao_8080拦截 默认开启不区分大小写

    • 在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对路径,则nginx不会把location中匹配的路径部分加入代理uri;如果没有/,则会把匹配的路径部分加入代理uri。
    
    server {
    listen       80;
    server_name  www.hao.cn;
    
    #访问www.hao.cn/hao_8080 最终跳转到 http://127.0.0.1:8080/;
    location /hao_8080/ {
        proxy_pass http://127.0.0.1:8080/;
        index  index.html index.htm;
    }
    
    #访问www.hao.cn/hao_8081 最终跳转到http://127.0.0.1:8081/;
    location /hao_8081/ {
        proxy_pass http://127.0.0.1:8081/;
        index  index.html index.htm;
    }
    
    #访问www.hao.cn/hao_8081 最终跳转到http://127.0.0.1:8081/hao_8081;
    location /hao_8081/ {
        proxy_pass http://127.0.0.1:8081; # 注意这里结尾处没有/ ;
        index  index.html index.htm;
    }
    
    
    }
    
    

    二、nginx rewrite

    1. Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用。
    2. Rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。
    3. 通过Rewrite规则,可以实现规范的URL、根据变量来做URL转向及选择配置。

    2.1 rewrite全局变量

      nginx的rewrite规则就是使用正则匹配请求的url,然后根据定义的规则进行重写和改变,需ngx_http_rewrite_module模块来支持url重写功能,该模块是标准模块,默认已经安装。

    变量       含义
    $args     这个变量等于请求行中的参数,同$query_string
    $content length 请求头中的Content-length字段。
    $content_type   请求头中的Content-Type字段。
    $document_root  当前请求在root指令中指定的值。
    $host   请求主机头字段,否则为服务器名称。
    $http_user_agent    客户端agent信息
    $http_cookie    客户端cookie信息
    $limit_rate 这个变量可以限制连接速率。
    $request_method 客户端请求的动作,通常为GET或POST。
    $remote_addr    客户端的IP地址。
    $remote_port    客户端的端口。
    $remote_user    已经经过Auth Basic Module验证的用户名。
    $request_filename   当前请求的文件路径,由root或alias指令与URI请求生成。
    $scheme HTTP方法(如http,https)。
    $server_protocol    请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
    $server_addr    服务器地址,在完成一次系统调用后可以确定这个值。
    $server_name    服务器名称。
    $server_port    请求到达服务器的端口号。
    $request_uri    包含请求参数的原始URI,不包含主机名,如”/foo/bar.php?arg=baz”。
    $uri    不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
    $document_uri   与$uri相同。
    

    2.2 判断IP地址来源

     ## 如果访问的ip地址为192.168.5.165,则返回403
    if  ($remote_addr = 192.168.5.166) {  
         return 403;  
     } 
    

    2.3 限制浏览器访问

    ## 不允许谷歌浏览器访问 如果是谷歌浏览器返回500
    if ($http_user_agent ~ Chrome) {   
    return 500;  
    }
    
    
  • 相关阅读:
    用户描述
    课堂练习
    一阶段11.21
    一阶段11.20
    一阶段 11.19
    自己动手写spring(五) bean的生命周期管理
    自己动手写spring(四) 整合xml与注解方式
    自己动手写spring(三) 支持注解方式
    自己动手写spring(二) 创建一个bean工厂
    自己动手写spring(一) 使用digester
  • 原文地址:https://www.cnblogs.com/haoworld/p/nginx-zhong-de-pei-zhi-ming-ling.html
Copyright © 2011-2022 走看看