In-depth explanation of nginx location priority

In-depth explanation of nginx location priority

location expression type

~ indicates to perform a regular match, case-sensitive
~* means to perform a regular match, which is case insensitive
^~ means ordinary character matching. Use prefix matching. If the match is successful, no other locations will be matched.
= Performs an exact match of common characters. That is, an exact match.
@ "@" defines a named location, used for internal targeting, such as error_page, try_files

Location priority description

The order of locations in nginx's location and configuration does not matter much. The type of the location expression. For expressions of the same type, the one with a longer string will be matched first.

Here are the instructions in order of priority:

First priority: The equal sign type (=) has the highest priority. Once a match is found, no further matches are searched.
Second priority: ^~ type expressions. Once a match is found, no further matches are searched.
Third priority: Regular expression type (~ ~*) has the second highest priority. If there are multiple locations that match the regular expression, the one with the longest regular expression is used.
Fourth priority: regular string matching type. Match by prefix.

The location priority example configuration items are as follows:

location = / {
# Only matches requests /
[ configuration A ]
}

location / {
# Matches all requests starting with /. But if there is a longer expression of the same type, the longer expression is chosen. If there is a regular expression that can be matched, # will match the regular expression first.
[ configuration B ]
}

location /documents/ {
# Matches all requests starting with /documents/. But if there is a longer expression of the same type, the longer expression is chosen.
#If there is a regular expression that can be matched, the regular expression will be matched first.
[ configuration C ]
}

location ^~ /images/ {
# Match all expressions starting with /images/. If the match is successful, stop matching and searching. Therefore, even if there is a matching regular expression location, it will not be used [configuration D]
}

location ~* \.(gif|jpg|jpeg)$ {
# Match all requests ending with gif jpg jpeg. However, requests starting with /images/ will use Configuration D
[ configuration E ]
}

Request matching example

/ -> configuration A
/index.html -> configuration B
/documents/document.html -> configuration C
/images/1.gif -> configuration D
/documents/1.jpg -> configuration E

Note that the above matching has nothing to do with the order in which they are defined in the configuration file.

Summarize

This is the end of this article about nginx location priority. For more information about nginx location priority, please search 123WORDPRESS.COM’s previous articles or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Nginx configuration directive location matcher priority and security issues
  • A brief analysis of the matching priority of Nginx configuration location

<<:  Implementation process of row_number in MySQL

>>:  How to use indexes to optimize MySQL ORDER BY statements

Recommend

Detailed explanation of system input and output management in Linux

Management of input and output in the system 1. U...

How to install MySQL 8.0.17 and configure remote access

1. Preparation before installation Check the data...

Elegant practical record of introducing iconfont icon library into vue

Table of contents Preface Generate SVG Introducti...

Docker uses a single image to map to multiple ports

need: The official website's resource server ...

Web front-end development CSS related team collaboration

The front-end development department is growing, ...

Detailed implementation plan of Vue front-end exporting Excel files

Table of contents 1. Technology Selection 2. Tech...

v-html rendering component problem

Since I have parsed HTML before, I want to use Vu...

Detailed explanation of common commands in MySQL 8.0+

Enable remote access Enable remote access rights ...

Implementation of JavaScript downloading linked images and uploading them

Since we are going to upload pictures, the first ...

Detailed explanation of how to configure Nginx web server sample code

Overview Today we will mainly share how to config...

Example of how to achieve ceiling effect using WeChat applet

Table of contents 1. Implementation 2. Problems 3...

mysql5.7 remote access settings

Setting up remote access in mysql5.7 is not like ...

Solution to prevent caching in pages

Solution: Add the following code in <head>: ...