Syntax
location [=|~|~*|^~] /uri/ {...}
Rules
=: Gibt die genaue URI-Übereinstimmung an (interessierte Schüler können sich den URL- und URI-Unterschied ansehen)
~: Gibt an, dass die Groß-/Kleinschreibung beachtet werden soll.
~*: Zeigt an, dass die Groß-/Kleinschreibung nicht berücksichtigt werden soll.
!~ && !~*: Zeigt an, dass die Groß-/Kleinschreibung nicht berücksichtigt werden muss. Normal und ohne Berücksichtigung der Groß-/Kleinschreibung.
/: Universeller Abgleich, beliebig Die Anfrage wird mit dem
Standortübereinstimmungsziel
abgeglichen. Der Standortübereinstimmungstest verwendet nur den Anforderungs-URI-Teil, nicht den Parameterteil. (Grund: Es gibt zu viele Möglichkeiten, Parameter zu schreiben und sie können nicht genau abgeglichen werden)
Standortübereinstimmungsreihenfolge
Unter der Voraussetzung mehrerer Standortkonfigurationen ist die Standortübereinstimmungsreihenfolge (nicht überprüft, hehe, bei Google gesucht)
1. Zuerst abgleichen =
2. Als nächstes führen Sie den regulären Abgleich gemäß der Reihenfolge der Konfigurationsdatei durch,
4. Übergeben Sie ihn schließlich an / für den allgemeinen Abgleich Erfolgreicher Abgleich: Stoppen Sie den Abgleich und befolgen Sie die aktuellen Abgleichsregeln. Die nginx-Konfigurationsdatei ist von unten nach oben in drei hierarchische Strukturen unterteilt:
| Level V-Standortblock ermöglicht die angeforderte URI
nginx. Der Benutzer definiert den Standortblock und gibt ein passendes Muster an, um mit einem bestimmten URI übereinzustimmen. Neben einfachen Zeichenfolgen (z. B. Dateisystempfaden) sind auch komplexere Übereinstimmungsmuster zulässig. Die grundlegende Syntaxform des
location [=|~|~*|^~|@] pattern { ... }
[=|~|~*|^~|@] wird als Standortmodifikator bezeichnet, der definiert, wie Nginx mit dem nachfolgenden Muster übereinstimmt, und das grundlegendste Musterattribut (einfache Zeichenfolge oder regulärer Ausdruck).
Über den Standortmodifikator
1. =
Beispiel:
server { server_name jb51.net; location = /abcd { […] } }
http://jb51.net/abcd # Stimmt genau überein http://jb51.net/abcd # Wenn das System, auf dem der Nginx-Server ausgeführt wird, die Groß-/Kleinschreibung nicht beachtet, wie z. B. Windows, dann stimmt es auch überein http://jb51.net/abcd?param1?m2 # Ignorieren Sie die Argumente der Abfragezeichenfolge, hier ist das ?param1?m2 nach /abcd http://jb51.net/abcd/ # Stimmt nicht überein, weil Am Ende steht ein Schrägstrich. Nginx betrachtet diese Situation nicht als vollständige Übereinstimmung. http://jb51.net/abcde # Stimmt nicht überein, da es sich nicht um eine vollständige Übereinstimmung handelt
Sie müssen keinen Standortmodifikator schreiben, Nginx kann trotzdem mit dem Muster übereinstimmen. Passen Sie in diesem Fall die URIs an, die mit dem angegebenen Muster beginnen. Beachten Sie, dass es sich bei den URIs hier nur um gewöhnliche Zeichenfolgen handeln kann und keine regulären Ausdrücke verwendet werden können.Beispiel:
server { server_name website.com; location /abcd { […] } }
http://jb51.net/abcd # Stimmt genau überein
http://jb51.net/abcd # Wenn das System, auf dem der Nginx-Server ausgeführt wird, die Groß-/Kleinschreibung nicht beachtet, wie z. B. Windows, dann stimmt es auch überein
http://jb51.net/abcd?param1?m2 # Ignorieren Sie die Argumente der Abfragezeichenfolge, hier ist das ?param1?m2 nach /abcd http://jb51.net/abcd/ # Der abschließende Schrägstrich bei das Ende liegt ebenfalls im passenden Bereich
http://jb51.net/abcde # Es stimmt immer noch überein, da die URI mit dem Muster
example:
server {
server_name jb51.net;
location ~ ^/abcd$ {
[…]
}
}
Übereinstimmungssituation: http://jb51.net/abcd # Exakte Übereinstimmung
http://jb51.net/abcd # Keine Übereinstimmung, ~ unterscheidet zwischen Groß- und Kleinschreibung
http://jb51.net/ abcd?param1?m2 # Ignorieren Sie die Abfragezeichenfolgenargumente, hier ist ?param1?m2 nach /abcd http://jb51.net/abcd/ # Stimmt nicht überein, da am Ende ein Schrägstrich steht, ist dies nicht der Fall Übereinstimmung mit dem regulären Ausdruck^/abcd$
4. ~*
与 ~ 类似,但这个 location modifier 不区分大小写,pattern 须是正则表达式
example:
server { server_name website.com; location ~* ^/abcd$ { […] } }
匹配情况:
http://jb51.net/abcd # 完全匹配
http://jb51.net/abcd # 匹配,这就是它不区分大小写的特性
http://jb51.net/abcd?param1?m2 # 忽略查询串参数(query string arguments),这里就是 /abcd 后面的 ?param1?m2
http://jb51.net/abcd/ # 不匹配,因为末尾存在反斜杠(trailing slash),并不匹配正则表达式 ^/abcd$
http://jb51.net/abcde # 不匹配正则表达式 ^/abcd$
5. ^~
匹配情况类似 2. (none) 的情况,以指定匹配模式开头的 uri 被匹配,不同的是,一旦匹配成功,那么 nginx 就停止去寻找其他的 location 块进行匹配了(与 location 匹配顺序有关)
6. @
用于定义一个 location 块,且该块不能被外部 client 所访问,只能被 nginx 内部配置指令所访问,比如 try_files or error_page
演示实例
产生的效果如下:
访问根目录/,匹配到location /
访问除hello.php之外的其它php程序,匹配到location ~ \.php$,并且用php5-fpm去运行
访问hello.php,匹配到location = /hello.php,访问被重定向到好联系官网
Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie den Standort auf dem Nginx-Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!