您的位置:首页 > 运维架构 > Nginx

Nginx Location配置详解

2018-01-17 10:14 239 查看
用户通过浏览器发起请求至Nginx后,Nginx通过查找配置文件将客户端请求映射到一个location block,后续处理由location中所配置的每个指令对应的模块去处理。

nginx.conf配置文件中默认至少存在一个location。

常见Location匹配URL的方式如下:

=                                                     字面精确匹配;

^~                                                    最大前缀匹配;

/                                                      不带任何前缀:最大前缀匹配;

~                                                     大小写相关的正则匹配;

~*                                                    大小写无关的正则匹配;

@                                                     location内部重定向的变量。

其中location =、location ^~、location / 属于普通字符串匹配
location ~ 、location ~* 属于正则表达式匹配

Location规则匹配优先级:

(location =) > (location 完整路径) > (location ^~ 路径) > (location ~|~* 正则顺序) > (location 部分起始路径) > (location  /)

如下为Nginx Location规则案例演示:

location  = / {

  [ configuration  L1 ]

  #只会匹配/,优先级比Location /低。

}

location  = /index.html {

  [ configuration  L2 ] 

#只会匹配/index.html,优先级最高。

}

location  / {

  [ configuration L3 ]

  #匹配任何请求,因为所有请求都是以"/"开始;

  #但是更长字符匹配或者正则表达式匹配会优先匹配,优先级最低。

}

location = /images/ {

  [ configuration L4 ]

  #匹配任何以/images/开始的请求,并停止匹配其它location;

}

location ~* \.(html|txt|gif|jpg|jpeg)$ {

  [ configuration L5]

  # 匹配以html、txt、gif、jpg、jpeg结尾的URL文件请求;

  # 但是所有/images/目录的请求将由 [Configuration L4]处理。

}

浏览器发起HTTP Request URI案例与Location规则案例匹配如下:

/ 匹配configuration L3;

/index.html匹配configuration L2;

/images/匹配configuration L4;

/images/logo.png匹配configuration L4;

/img/test.jpg匹配configuration L5。

企业生产环境中无需在nginx.conf配置文件中同时添加五种规则匹配,如下是生产环境Nginx Location部分配置样例:

location /

{

    root /var/www/html/;

       expires      60d;

}

location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$

{

       root /var/www/html/;

       expires      60d;     

}

location ~ .*\.(jsp|php|cgi|do)$

{

       root /var/www/html/;

       proxy_pass http://linux_web;
    proxy_http_version 1.1;

    proxy_set_header Connection "";

    proxy_set_header Host  $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   

}

location =/newindex.html

{

    root /var/www/newwww/;

       expires      60d;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: