Linux学习-nginx学习之location
Posted 丢爸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 static1..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>
创作挑战赛
新人创作奖励来咯,坚持创作打卡瓜分现金大奖
以上是关于Linux学习-nginx学习之location的主要内容,如果未能解决你的问题,请参考以下文章