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

Use Vue3 for data binding and display list data

Table of contents 1. Comparison with Vue2 1. New ...

An example of vertical centering of sub-elements in div using Flex layout

1. Flex is the abbreviation of Flexible Box, whic...

Practical example of nested routes in vue.js Router

Table of contents Preface Setting up with Vue CLI...

Five solutions to cross-browser problems (summary)

Brief review: Browser compatibility issues are of...

Solve the problem of spring boot + jar packaging deployment tomcat 404 error

1. Spring boot does not support jsp jar package, ...

Detailed tutorial on installing Docker on CentOS 7.5

Introduction to Docker Docker is an open source c...

Vue3+el-table realizes row and column conversion

Table of contents Row-Column Conversion Analyze t...

Dealing with the problem of notes details turning gray on web pages

1. In IE, if relative positioning is used, that is...

Introduction to JWT Verification Using Nginx and Lua

Table of contents Preface Lua Script nignx.conf c...

Solve the splicing problem of deleting conditions in myBatis

I just learned mybatis today and did some simple ...

MySQL Series 7 MySQL Storage Engine

1. MyISAM storage engine shortcoming: No support ...

About the pitfalls of implementing specified encoding in MySQL

Written in front Environment: MySQL 5.7+, MySQL d...