Ngixn运维之六 server和 location配置

Ngixn运维之六 server和 location配置

初级配置案例

server {
        listen       80;
        server_name 118.1118.118.118  localhost www.example.cn examle.cn;

        charset utf-8;
        access_log  /var/logs/nginx/access_example.log  main;

       #定义静态资源位置
        location / {
            root   /static;
            index  index.html index.htm;
        }

        location ^~ /example/ {
            proxy_set_header   Host    $host;
            proxy_set_header   X-Real-IP   $remote_addr;
            proxy_set_header   REMOTE-HOST $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass   http://apiexample;
            client_max_body_size    10m;
        }
        error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /static;
        }
}

server配置

  • listen:监听端口
  • server_name:匹配访问的ip地址或者域名,多个配置之间用空格分隔
  • root:表示整个server虚拟主机内的根目录,所有当前主机中web项目的根目录
  • index:用户访问web网站时的全局首页
  • charset:用于设置默认编码格式
  • access_log:用于指定该虚拟主机服务器中的访问记录日志存放路径 及日志格式
  • error_log:用于指定该虚拟主机服务器中访问错误日志的存放路径 及日志格式

location 配置

Syntax: location [ = | ~ | ~* | ^~ ] uri { … } 或者 location @name { … }
Default: —
Context: server, location

nginx在解码以 “%XX”形式编码的文本和解析“.” 和 “…”的相对路径以及将“//“转为”/“之后得到的标准化URI执行匹配

location 可以由前缀字符串定义,也可以由正则表达式定义。正则表达式使用前面为“~*”修饰符(用于不区分大小写的匹配)或“~”修饰符(用于区分大小写的匹配)指定。若要找到给定请求的位置匹配,NGiNX首先检查使用前缀字符串(前缀位置)定义的位置。其中,选择和记忆最长匹配前缀的位置。然后按照配置文件中出现的顺序检查正则表达式。正则表达式的搜索在第一个匹配项上终止,并且使用相应的配置。如果找不到正则表达式的匹配,则使用前面记住的前缀位置的配置。

  • = location与URI的精确匹配,如果精确匹配成功,则匹配终止。
  • ^~ 表示 uri 以某个常规字符串开头,理解为匹配 url 路径即可。 nginx 不对 url 做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa 匹配到(注意是空格)。
  • ~ 表示区分大小写的正则匹配
  • ~* 表示不区分大小写的正则匹配(和上面的唯一区别就是大小写)
  • !~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则
  • / 通用匹配,任何请求都会匹配到,默认匹配。

例如有以下配置:

location = / {
    [ configuration A ]
}

location / {
    [ configuration B ]
}

location /documents/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
    [ configuration E ]
}

location ~* .*\.(js|css)?$ {
    [ configuration F ]
}
URI匹配
/A
/index.htmlB
/documents/document.htmlC
/images/1.gifD
/images/c/aD
/documents/1.jpgG
/resource/main.js?v=1.25F

如果location由以/结尾的前缀字符串定义,并且请求由proxy_pass、fastcgi_pass、uwsgi_pass、scgi_pass、memcached_pass或grpc_pass之一处理,则执行特殊处理。如果是 = 精确匹配但不是以/结尾的前缀字符串也会自动加上然后重定向处理。
例如:

location /user/ {
    proxy_pass http://user.example.com;
}

location = /user {
    proxy_pass http://login.example.com;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值