Table of Contents

About

A location block is a block that is located inside a server block and maps a a resource path to a destination path such as:

A server block may have several location block.

Example

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
    
    location ~* \.(gif|jpg|png)$ {
        expires 30d;
    }

    location ~ \.php$ {
        fastcgi_pass  localhost:9000;
        fastcgi_param SCRIPT_FILENAME
                      $document_root$fastcgi_script_name;
        include       fastcgi_params;
    }
}

Syntax

Syntax 1)

location [prefix] expression {
}

where:

  • prefix is optional may be:
    • = matches exactly the expression
    • ~ indicates a regular_expression match
    • ~* the asterisk after the tilde makes the regular match case insensitive.
  • expression is an expression that is matched only against the URL path part (and not the query part because it can can have many form for the same data. ie user=john&page=1 is equivalent to page=1&user=john)

An expression without prefix and the value /doc will match the directory /doc/ but also /docker

Regular expression

Regular expression in Nginx use the pcre syntax 2) with some twist such as you don’t have to escape the forward slash (/) in a URI as you do in a standard regex.

  • Name group capture is supported. Below is example of two groups with the name begin and end respectively.
location ~* (?<begin>.*myapp)/(?<end>.+\.php)$ {
    #...
}

Processing

After the server has been found in the request processing, the second step is to find the location block.

The Location block processing follows the following algorithm;

  • nginx first searches for the most specific prefix location given by literal strings regardless of the listed order.
  • then:
    • nginx checks locations given by regular expression in the order listed in the configuration file.
    • The first matching regular expression is chosen
    • If no regular expression matches a request, then nginx uses the most specific prefix location found earlier.

Ref