12. Nginx进阶-Location

news2024/9/24 11:31:52

简介

Nginx的三大区块

在Nginx中主要配置包括三个区块,结构如下:

http {												#协议级别
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

  access_log  /var/log/nginx/access.log  main;

  sendfile        on;
  keepalive_timeout  65;
  server {									 #服务器级别
    listen 80;
    server_name wang.mingqu.com;
    charset utf-8;

    location / {							#请求级别
      root /www/html/web/;
      index index.html index.htm;
    }
  }
}

什么是location?

location是配置在Server模块中的请求级别配置。
location可以根据不同的URI使用不同的配置来处理不同的请求。
location是有顺序的,会根据不同请求配置的优先级来匹配的location处理。

应用

基本语法

server {
  ......
  location [=|~|~*|^~|@] pattern {
    ......
  }
}

前缀匹配

符号的解释

符号解释
=表示精确匹配,优先级最高
^~表示URI以某个常规字符串开头的匹配,匹配URL的路径
~表示区分大小写的正则匹配
~*表示不区分大小写的正则匹配
!~表示区分大小写且不匹配的正则
!~*表示不区分大小写且不匹配的正则
/通用匹配符,匹配任意请求
@内部服务跳转

符号的优先级


注意:有多个location配置的情况下,依照优先级匹配;当匹配成功后,停止匹配。

应用举例

主配置文件
路径:/etc/nginx/nginx.conf

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

无修饰符

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {
  listen 80;
  server_name wang.mingqu.com;
  charset utf-8;

  location /web01/ {
    root /www/wangmingqu/html;
    index index.html index.htm;
  }
}
  1. 数据准备
mkdir /www/wangmingqu/html/web01 -p
echo "无修饰符" > /www/wangmingqu/html/web01/index.html
  1. 启动验证
nginx -t
systemctl restart nginx

image.png

=匹配

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {
  listen 80;
  server_name wang.mingqu.com;
  charset utf-8;

  location / {
    root /www/wangmingqu/html;
    index index.html index.htm;
  }

  location = / {
    root /www/wangmingqu/html;
    index index.html index.htm;
  }
}
  1. 数据准备
mkdir /www/wangmingqu/html/{web01,web} -p
echo "无修饰符" > /www/wangmingqu/html/web01/index.html
echo "精确匹配" > /www/wangmingqu/html/web/index.html
  1. 启动验证
nginx -t
systemctl restart nginx

image.png

^~匹配

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {
  listen 80;
  server_name wang.mingqu.com;
  charset utf-8;

  location ^~ /yewu/ {
    root /www/wangmingqu/html;
    index index.html index.htm;
  }
}
  1. 数据准备
mkdir -p /www/wangmingqu/html/yewu
echo "以yewu开头的匹配" > /www/wangmingqu/html/yewu/index.html
  1. 启动验证
nginx -t
systemctl restart nginx

image.png

~匹配

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {
  listen 80;
  server_name wang.mingqu.com;
  charset utf-8;

  location ~* \.jpeg$ { #区分大小写匹配的所有以.jpeg结尾的文件
    root /www/wangmingqu/html/images/;
  }
}
  1. 数据准备
mkdir -p /www/wangmingqu/html/images/
#上传.png和.PNG结尾的图片
ll /www/wangmingqu/html/images/
total 1360
-rw-r--r-- 1 root root 1166629 Mar  4 14:22 lower.jpeg
-rw-r--r-- 1 root root  222061 Mar  4 14:22 upper.JPEG
  1. 启动验证
nginx -t
systemctl restart nginx

后缀大写
image.png
后缀小写
image.png

~*匹配

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {
  listen 80;
  server_name wang.mingqu.com;
  charset utf-8;

  location ~ \.jpeg$ { #不区分大小写匹配的所有以.jpeg结尾的文件
    root /www/wangmingqu/html/images/;
  }
}
  1. 数据准备
mkdir -p /www/wangmingqu/html/images/
#上传.png和.PNG结尾的图片
ll /www/wangmingqu/html/images/
total 1360
-rw-r--r-- 1 root root 1166629 Mar  4 14:22 lower.jpeg
-rw-r--r-- 1 root root  222061 Mar  4 14:22 upper.JPEG
  1. 启动验证
nginx -t
systemctl restart nginx

后缀大写
image.png
后缀小写
image.png

/匹配

  1. Nginx配置

路径:/etc/nginx/conf.d/wangmingqu.conf

server {
  listen 80;
  server_name wang.mingqu.com;
  charset utf-8;

  location / {
    root /www/wangmingqu/html/;
    index index.html index.htm;
  }
}
  1. 数据准备
mkdir -p /www/wangmingqu/html/
echo "通用匹配符" > /www/wangmingqu/html/index.html
  1. 启动验证
nginx -t
systemctl restart nginx

image.png

@匹配

@符号,用于定义一个location块,且该location块不能被外部client访问,只能被Nginx内部配置的指令访问,如try_files、error_page。

  1. try_files举例:
server {
    listen       80;
    server_name  wang.mingqu.com;
    charset utf-8;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ @router;
    }
    location @router{
        rewrite ^(.+)$ /index.html last;
    }
}
  1. error_page举例:
server {
  listen 80;
  server_name wang.mingqu.com;
  charset urf-8;
  
  location / {
    error_page 418 = @queryone;
    error_page 419 = @querytwo;
    error_page 420 = @querythree;

    if ( $args ~ "service=one" ) { return 418; }
    if ( $args ~ "service=two" ) { return 419; }
  }

  location @queryone {
    return 200 'do stuff for one';
  }

  location @querytwo {
    return 200 'do stuff for two';
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1490022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

13-Java代理模式 ( Proxy Pattern )

Java代理模式 摘要实现范例 代理模式(Proxy Pattern)使用一个类代表另一个类的功能 代理模式创建具有现有对象的对象,以便向外界提供功能接口 代理模式属于结构型模式 摘要 1. 意图 为其他对象提供一种代理以控制对这个对象的访问2. 主…

游戏引擎用什么语言开发上层应用

现在主流的游戏引擎包括: 1、Unity3D,C#语言,优点在于支持几乎所有平台 丹麦创立的一家公司,现已被微软收购。在中国市场占有率最高,也是社群很强大,一般解决方案也能在网上找到,教程丰富。物理…

springboot项目单纯使用nacos注册中心功能

Spring Boot 项目完全可以单独使用 Nacos 作为注册中心。Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它支持服务的注册与发现,能够与 Spring Boot 应用无缝集成,为微服务架构提供了强大的支持。 在使用 Nacos 作为注册中…

eclipse搭建java web项目

准备条件 eclipsejdk1.8 (配置jdk环境)apache-tomcat-8.5.97(记住安装位置) 一 点击完成 开始创建javaweb项目 import java.io.IOException; import java.io.PrintWriter;import javax.servlet.ServletException; import javax.s…

java VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城 小程序商城搭建

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

3.1_2024ctf青少年比赛部分web题

php后门 根据x-powered-by知道php的版本 该版本存在漏洞: PHP 8.1.0-dev 开发版本后门 根据报错信息,进行提示,前 GET / HTTP/1.1 Host: challenge.qsnctf.com:31639 User-Agentt:12345678system(cat /flag);var_dump(2*3);zerodium12345678…

二维码门楼牌管理系统技术服务:安装要求详解

文章目录 前言一、安装要求二、系统功能与应用三、总结与展望 前言 在信息化时代的浪潮下,二维码技术的应用已经深入到了我们生活的方方面面。其中,二维码门楼牌管理系统的出现,不仅提高了社区管理的效率,还为居民带来了极大的便…

tomcat优化、nginx +tomcat 部署 (三)

在目前流行的互联网架构中,Tomcat在目前的网络编程中是举足轻重的,由于Tomcat的运行依赖于JVM,从虚拟机的角度把Tomcat的调整分为外部环境调优 JVM 和 Tomcat 自身调优两部分 Tomcat 是一个流行的开源 Java 服务器,用于托管 Java …

Web前端---表格和表单

1.表格概述 表格标记&#xff1a;<table></table> 表格标题标记&#xff1a;<caption></caption> 表头&#xff1a;<th></th>------heading 行标记&#xff1a;<tr></tr>-----r是row 列标记&#xff1a;<td></t…

javaWebssh水利综合信息管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh水利综合信息管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCA…

【Python】OpenCV-使用ResNet50进行图像分类

使用ResNet50进行图像分类 如何使用ResNet50模型对图像进行分类。 import os import cv2 import numpy as np from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions from tensorflow.keras.preprocessing import image# 设置…

光栅化算法

多数计算机图形图像&#xff0c;是通过光栅显像显示给用户的&#xff0c;这种系统将图像作为像素阵列进行显示&#xff0c;像素&#xff08;pixel&#xff09;即图像元素&#xff08;picture element&#xff09;的简称。这些像素采用RGB颜色空间。本文讨论光栅显像的基本原理&…

HTML---Ajax

文章目录 目录 文章目录 前言 一.Ajax概述 二.原生创建Ajax 三,使用Jquery处理Ajax 总结 一.Ajax概述 AJAX&#xff08;Asynchronous Javascript And XML&#xff09;是一种创建交互式网页应用的网页开发技术。它使用Javascript语言与服务器进行异步交互&#xff0c;可以传…

【C++】STL容器string详解

string详解 一&#xff0c;STL简介1. 版本2. 六大组件 二&#xff0c;string类的使用1. string类的常用构造2. string类容量相关2.1 size和capacity接口2.2 reserve和resize 3. string类对象的访问和遍历&#xff0c;迭代器3.1 运算符重载[]3.2 string迭代器 4. string类对象的…

Docker Protainer可视化平台,忘记登录密码,重置密码。

由于好久没有登录portainer系统&#xff0c;导致忘记了登录密码&#xff0c;试了好多常用的密码都不对&#xff0c;无奈只能重置密码。 一、停止protainer 容器 查看容器ID和COMMAND 用于停止容器 docker ps -a停止容器 docker stop portainer二、查找volume data 宿主机所在…

VisualStudio 2022的安装

1.IDE 推荐最新版VisualStudio2022&#xff0c;功能十分强大&#xff0c;社区版就够用了。下载地址 2.安装 工作负载选择桌面开发&#xff0c;Web开发可以暂时不选中&#xff08;大部分都用不到&#xff09;。 单个组件选中NET 6.0和NET Frameword4.6.1 也就可以了。 后面安…

【小白学机器学习6】真实值,观测值,拟合值,以及数据的误差的评价:集中趋势,离散度,形状等

目录 1 世界上有哪几种值&#xff1f;只有3种值 1.1 真值/真实值/理想值/主观值&#xff08;形而上学世界里&#xff09; 1.2 实际值/现实值/观测值/样本值&#xff08;看到的/记录下来的&#xff09; 1.3 拟合值/预测值&#xff08;算出来的&#xff09; 2 对数据的各种…

高级大数据技术 实验一 scala编程

​ 高级大数据技术 实验一 scala编程 写的不是很好&#xff0c;大家多见谅&#xff01; 1. 计算水仙花数 实验目标; &#xff08;1&#xff09; 掌握scala的数组&#xff0c;列表&#xff0c;映射的定义与使用 &#xff08;2&#xff09; 掌握scala的基本编程 实验说明 …

力扣hot100:438.找到字符串中所有字母异位词

26个字符&#xff0c;我复制怎么了&#xff1f;26个字符我比较个数怎么了&#xff1f; 顶多时间复杂度*26 本题用固定窗口大小的滑动窗口每次比较包含26个元素的数组次数&#xff0c;最容易写。 动态窗口大小哈希表存数值&#xff08;双指针差值&#xff09;难想难写。 一、动态…

【CSS】(浮动定位)易忘知识点汇总

浮动特性 加了浮动之后的元素,会具有很多特性,需要我们掌握的. 1、浮动元素会脱离标准流(脱标&#xff1a;浮动的盒子不再保留原先的位置) 2、浮动的元素会一行内显示并且元素顶部对齐 注意&#xff1a; 浮动的元素是互相贴靠在一起的&#xff08;不会有缝隙&#xff09;&…