What are the Nginx Location directive URI matching rules?
May 14, 2023 pm 11:58 PM1. Introduction
The location directive is the core configuration in the http module. It receives requests sent by users based on predefined url matching rules. According to the matching As a result, the request is forwarded to the backend server, illegal requests are directly rejected and 403, 404, 500 error processing, etc. are returned.
2. Location instruction syntax
location [=|~|~*|^~|@] /uri/ { … } or location @name { … }
3. uri matching mode
location directive is divided into two matching modes:
1> Ordinary string matching: with = Rules for starting or starting with no leading character (~)
2> Regular matching: starting with ~ or ~* indicates regular matching, ~* indicates that regular matching is not case-sensitive
4, location uri Matching rules
When nginx receives a request, it will intercept the uri part of the request and search for all uri matching patterns defined in the location directive. In the server module, multiple location instructions can be defined to match different URL requests, and the URI matching patterns of multiple different location configurations. The overall matching principle is: first match the ordinary string pattern, and then match the regular pattern. Only the uri part is recognized. For example, the request is: /test/abc/user.do?name=xxxx
After a request comes, the process of nginx matching this request is as follows:
1> First search for an exact match starting with =, such as: location = /test/abc/user.do { … }
2> Then search for ordinary matches, with the largest prefix being In principle, if there are the following two locations, the latter one will be matched
* location /test/ { … }
* location /test/abc { … }
So the regular matching item matching rules are affected by the defined order, but the ordinary matching mode will not
6> If no match is found, 404 will be returned
5. The difference between exact matching and fuzzy matching The difference between location =/ { … } and location / { … }:
* The former one is an exact match and only responds to / requests. All /xxx or /xxx/xxxx type requests will not be matched in the form of prefixes. It
* The latter one is that as long as the request is prefixed with /, it will be matched. Such as: /abc, /test/abc, /test/abc/aaaa
6, regular and non-regular matching
2> location ^~ / { … }: ^~ means to turn off regular matching. When this ordinary matching pattern is searched, the regular matching pattern will no longer be searched.
... http { ... server { listen 80; server_name localhost; location / { root html; index index.html index.htm; # deny all; 拒絕請求,返回403 # allow all; 允許請求 } location /abc { deny all; } location ~ /.+\.jsp$ { proxy_pass http://location:9090; } # 匹配所有/test路徑下的jsp文件 location ~ /test/.+\.jsp$ { proxy_pass http://localhost:8080; } # 定義各類錯誤頁 error_page 404 /404.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # @類似于變量定義 # error_page 403 http://blog.csdn.net; #這種定義不允許,需求利用@定義臨時變量來實現(xiàn) error_page 403 @page403; location @page403 { proxy_pass http://blog.csdn.net; } } }
The above is the detailed content of What are the Nginx Location directive URI matching rules?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Docker container startup steps: Pull the container image: Run "docker pull [mirror name]". Create a container: Use "docker create [options] [mirror name] [commands and parameters]". Start the container: Execute "docker start [Container name or ID]". Check container status: Verify that the container is running with "docker ps".

You can query the Docker container name by following the steps: List all containers (docker ps). Filter the container list (using the grep command). Gets the container name (located in the "NAMES" column).

How to confirm whether Nginx is started: 1. Use the command line: systemctl status nginx (Linux/Unix), netstat -ano | findstr 80 (Windows); 2. Check whether port 80 is open; 3. Check the Nginx startup message in the system log; 4. Use third-party tools, such as Nagios, Zabbix, and Icinga.

Create a container in Docker: 1. Pull the image: docker pull [mirror name] 2. Create a container: docker run [Options] [mirror name] [Command] 3. Start the container: docker start [Container name]

Question: How to start Nginx? Answer: Install Nginx Startup Nginx Verification Nginx Is Nginx Started Explore other startup options Automatically start Nginx

NGINX and Apache have their own advantages and disadvantages and are suitable for different scenarios. 1.NGINX is suitable for high concurrency and low resource consumption scenarios. 2. Apache is suitable for scenarios where complex configurations and rich modules are required. By comparing their core features, performance differences, and best practices, you can help you choose the server software that best suits your needs.

Practical Tips for Improving PhpStorm Performance in CentOS Systems This article provides a variety of methods to help you optimize the performance of PhpStorm in CentOS systems and thus improve development efficiency. Before implementing any optimization measures, be sure to back up important data and verify the results in the test environment. 1. System-level optimization and streamline system services: Disable unnecessary system services and daemons to reduce system resource usage. Interfaceless Mode: Switching to interfaceless mode can significantly save resources if you do not need a graphical interface. Uninstall redundant software: Remove software packages and services that are no longer in use and free up system resources. 2. PHP configuration optimization enable OPcache: install and configure OPcache extensions to display

NGINX and Apache are both powerful web servers, each with unique advantages and disadvantages in terms of performance, scalability and efficiency. 1) NGINX performs well when handling static content and reverse proxying, suitable for high concurrency scenarios. 2) Apache performs better when processing dynamic content and is suitable for projects that require rich module support. The selection of a server should be decided based on project requirements and scenarios.
