Linux学习-nginx学习之location

Nignix之location学习

简介

用户请求时发出请求后,服务器会先进行域名匹配(server_name),然后再进行URI匹配,URI中没有使用正则表达式,nginx会先在server中的多个location选取匹配度最高的一个URI,URI是用户请求的字符串,即域名后面的web文件路径,然后使用该location模块中的正则URI和字符串,如果匹配成功就结束搜索,并使用此location处理此请求。

语法规则

location [ = | ~ | ~* | ^~ ] /URI {…}

  • 【=】需要请求字符串与URI精确匹配,如匹配成功就停止向下匹配并立即处理请求

  • 【~】表示包含正则表达式并区分大小写,并且匹配

  • 【!~】表示包含正则表达式并区分大小写,并且不包含

  • 【~*】表示包含正则表达式并且不区分大小写,并且匹配

  • 【!~*】表示包含正则表达式并且不区分大小写,并且匹配

  • 【^~】表示包含正则表达式,并且匹配以什么开头

  • 【$】表示包含正则表达式,并且匹配以什么结尾

  • 【\】表示包含正则表达式并且转义字符,可以转【.】【*】【?】等

  • 【*】表示包含正则表达式且代表任意长度的任意字符

例子
匹配优先级

【=】>【^~】 > 【~ | ~*】>【/】

#注:以下例子均在nginx配置文件中server的配置段中进行设置
精确匹配【=】
location = /nginx.jpg {
    root /data/nginx/static;
 }

在这里插入图片描述

区分大小写【~】
[root@nginx02 html]# ls /data/nginx/static/
nginx.jpg
#基于以下配置访问正常显示图片信息
location ~ /n.*\.jpg {
    root /data/nginx/static;
  }
#因~表示区分大小写,使用以下配置,图片则无法显示,访问会报404错误
location ~ /N.*\.jpg {
    root /data/nginx/static;
  }
#访问路径
通过浏览器:http://www.tye.com/nginx.jpg
不区分大小写【~*】
#1.访问时无论是大小写均可访问
location ~* /N.*\.jpg {
    root /data/nginx/static;
  }
#访问路径
通过浏览器:http://www.tye.com/nginx.jpg | http://www.tye.com/Nginx.jpg
#2.
location ~* /static {
    root /opt/tye;
  }
[root@nginx02 ~]# mkdir -p /opt/tye
[root@nginx02 tye]# mkdir static{1..3}
[root@nginx02 tye]# echo "static1" >> static1/index.html
[root@nginx02 tye]# echo "static2" >> static2/index.html
[root@nginx02 tye]# echo "static3" >> static3/index.html

在这里插入图片描述
在这里插入图片描述

匹配后缀$
#以.jpg|.png等名称结尾
location ~* \.(webp|jpg|jpeg|gif|bmp|png|tiff|tif|ico|wmf|js)$ {
    root /data/nginx/image1;
  }
[root@nginx02 image1]# pwd
/data/nginx/image1
[root@nginx02 image1]# ls
apache.jpeg  apache.webp  nginx.bmp  nginx.jpeg  nginx.jpg

在这里插入图片描述

Nginx四层访问控制
#访问基于ngx_http_access_module实现,可以通过匹配客户端IP地址进行限制用户访问
location /nginx_status {
            stub_status;
            #allow表示允许的地址列表,可以使用子网
            allow 192.168.88.1;
            #deny all阻止所有
            deny all;
        }
Nginx账户认证
#安装密码生成工具
[root@nginx02 tye]# yum install -y httpd-tools 
#-c创建一文件,-b表示不使用命令提示输入密码,-m表示通过MD5生成摘要密码
[root@nginx02 tye]# htpasswd -cbm /usr/local/nginx/conf/.htpasswd tye 123456
Adding password for user tye
[root@nginx02 tye]# htpasswd -bm /usr/local/nginx/conf/.htpasswd edison 123456
Adding password for user edison
[root@nginx02 tye]# cat /usr/local/nginx/conf/.htpasswd 
tye:$apr1$rse8FHiA$vz8AU2I0LzNTUE1zTFRjw1
edison:$apr1$fgIO3aGR$q5/TRbxV73rijSF5erFbd1

#配置nginx.conf文件
location /login {
            root /data/nginx/html;
            index index.html;
            auth_basic  "login password";
            auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
        }
错误页面配置
error_page 404 /error.html;
        location = /error.html {
           root /data/nginx/html;
        }
[root@nginx02 nginx]# cat /data/nginx/html/error.html
<meta charset="utf-8">
<h5>进错门了</h5>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值