Beim Zugriff auf http://localhost/a.PNG, Regel E wird abgeglichen, Regel D jedoch nicht, da Regel E nicht zwischen Groß- und Kleinschreibung unterscheidet.
Der Zugriff auf http://localhost/a.xhtml entspricht nicht Regel F und Regel G. http://localhost/a.XHTML entspricht nicht Regel G, da es keine Größe hat empfindlich. Schreiben. Regel F und Regel G gehören zur Eliminierungsmethode, die den Übereinstimmungsregeln entspricht, aber nicht abgeglichen wird. Denken Sie also darüber nach, wo sie in tatsächlichen Anwendungen verwendet werden.
Der Zugriff auf http://localhost/category/id/1111 wird schließlich mit Regel H übereinstimmen. Da keine der oben genannten Regeln zutrifft, sollte nginx die Anfrage an den Back-End-Anwendungsserver weiterleiten Derzeit gibt es FastCGI (PHP), Tomcat (JSP) und Nginx als direktionale Proxy-Server.
Im tatsächlichen Gebrauch habe ich persönlich das Gefühl, dass es mindestens drei übereinstimmende Regeldefinitionen gibt, wie folgt: #直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。
#这里是直接转发给后端应用服务器了,也可以是一个静态首页
# 第一个必选规则
location = / {
proxy_pass http://tomcat:8080/index
}
# 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项
# 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {
root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root /webroot/res/;
}
#第三个规则就是通用规则,用来转发动态请求到后端应用服务器
#非静态文件请求就默认是动态请求,自己根据实际把握
#毕竟目前的一些框架的流行,带.php,.jsp后缀的情况很少了
location / {
proxy_pass http://tomcat:8080/
}
Weitere Informationen, die nicht getestet wurden: 3. ReWrite-Syntax
zuletzt – verwenden Sie grundsätzlich dieses Flag.
break – Umleitung abbrechen und Abgleich nicht mehr fortsetzen
redirect – HTTP-Status 302 der temporären Umleitung zurückgeben
permanent – HTTP-Status 301 der permanenten Umleitung zurückgeben
Hinweis: Der größte Unterschied zwischen last und break ist
- break dient dazu, die Neuschreiberkennung des aktuellen Standorts zu beenden und keinen Standortabgleich mehr durchzuführen. - Letzter dient dazu, die Neuschreiberkennung des aktuellen Standorts zu beenden, aber den Standort erneut zu versuchen Anpassen und Verarbeiten der Block-Rewrite-Regeln
1. Die folgenden Ausdrücke können verwendet werden, um zu bestimmen:
-f und !-f werden verwendet, um zu bestimmen, ob die Datei vorhanden ist.
-d und !-d werden verwendet, um zu bestimmen, ob die Datei vorhanden ist Bestimmen Sie, ob das Verzeichnis vorhanden ist
-e und !-e werden verwendet, um festzustellen, ob eine Datei oder ein Verzeichnis vorhanden ist
-x und !-x werden verwendet, um zu bestimmen, ob eine Datei ausführbar ist
2 globale Variablen, die zur Beurteilung verwendet werden können
$args #Diese Variable entspricht dem Parameter in der Anforderungszeile.
$content_length #Feld „Inhaltslänge“ im Anforderungsheader.
$content_type #Content-Type-Feld im Anforderungsheader.
$document_root #Der in der Root-Direktive angegebene Wert wird derzeit angefordert.
$host #Host-Header-Feld anfordern, andernfalls ist es der Servername.
$http_user_agent #Kundenagenteninformationen
$http_cookie #Kunden-Cookie-Informationen
$limit_rate #Diese Variable kann die Verbindungsrate begrenzen.
$request_body_file #Der temporäre Dateiname der Client-Anfragetextinformationen.
$request_method #Die vom Client angeforderte Aktion, normalerweise GET oder POST.
$remote_addr #Die IP-Adresse des Clients.
$remote_port #Port des Clients.
$remote_user #Benutzername, der vom Auth Basic Module überprüft wurde.
$request_filename #Der Dateipfad der aktuellen Anfrage, generiert durch die Root- oder Alias-Direktive und die URI-Anfrage.
$query_string # Gleich wie $args.
$scheme #HTTP Methode (z. B. http, https).
$server_protocol #Das von der Anfrage verwendete Protokoll, normalerweise HTTP/1.0 oder HTTP/1.1.
$server_addr #Serveradresse, dieser Wert kann nach Abschluss eines Systemaufrufs ermittelt werden.
$server_name #Servername.
$server_port #Die Portnummer, über die die Anfrage den Server erreicht.
$request_uri #Enthält den ursprünglichen URI der Anforderungsparameter, ausgenommen den Hostnamen, wie zum Beispiel: „/foo/bar.php?arg=baz“ .
$uri #Der aktuelle URI ohne Anforderungsparameter, $uri enthält nicht den Hostnamen, z. B. „/foo/bar.html“.
$document_uri #Das Gleiche wie $uri. Beispiel: http://localhost:88/test1/test2/test.php
$host: localhost
$server_port:88
$request_uri: http ://localhost:88/test1/test2/test.php
$document_uri:/test1/test2/test.php
$document_root:D:nginx/html
$request_filename:D:nginx/html /test1/test2/test.php
4. Umleitungssyntax
Mehrere Verzeichnisse in Parameter umwandeln
abc.domian.com/sort/2 => abc.domian.com/index.php?act= sort&name=abc&id=2
1. if
($host ~* (.*).domain.com) {
2. einstellen
$sub_name $1;
3. umschreiben
^/sort/(d+)/?$ /index.php?act=sort&cid=$sub_name&id=$1 last;
4. }
Verzeichnistausch
/123456/xxxx -> /xxxx?id=123456
1. umschreiben
^/(d+)/(.+)/ /$2?id=$1 last;
Zum Beispiel leitet die folgende Einstellung nginx zum Verzeichnis /nginx-ie um, wenn der Benutzer es verwendet dh als Nächstes:
1. if
($http_user_agent ~ MSIE) {
2. umschreiben
^(.*)$ /nginx-ie/$1 break;
3. } Das Verzeichnis fügt automatisch „/“ hinzu
1. wenn
(-d $request_filename){
2. umschreiben
^/(.*)([^/])$ http://$host/$1$2/ permanent;
3. }
HTaccess verboten
1. Standort
~/.ht {
2.
Alles ablehnen;
3.
}
Mehrere Verzeichnisse verbieten
1. Standort
~ ^/(cron|templates)/ {
2.
alles leugnen;
3. brechen;
4.
}
Dateien verbieten, die mit /data beginnen
Sie können Anfragen für .log.txt und andere Anfragen in mehrstufigen Verzeichnissen unter /data/; verbieten
1. Standort
~ ^/data {
2.
Alles ablehnen;
3.
}
Ein einzelnes Verzeichnis blockieren
.log.txt kann nicht gesperrt werden, kann angefordert werden
1. Standort
/searchword/cron/ {
2.
Alles ablehnen;
3.
}
Eine einzelne Datei blockieren
1. Speicherort
~ /data/sql/data.sql {
2.
Alles ablehnen;
3.
}
Legen Sie die Ablaufzeit für favicon.ico und robots.txt fest;
Hier beträgt favicon.ico 99 Tage, robots.txt 7 Tage und kein 404-Fehlerprotokoll aufgezeichnet
1. Ort
~(favicon.ico) {
2.
log_not_found off;
3. läuft ab
99d;4.
Pause;5.
}6.
Standort ~(robots.txt) {
8.
log_not_found off;9. läuft ab
7d;
10.Pause;
11 eine bestimmte Datei; hier sind es 600 Sekunden, und es wird kein Zugriffsprotokoll aufgezeichnet
1.
Speicherort
^~ /html/scripts/loadhead_1.js {
2.
access_log off;
3.
root /opt/lampp/htdocs/web;
4.
600;5.
Pause;6.
}Datei-Anti-Hotlinking und Ablaufzeit festlegenDie Rückgabe 412 ist hier ein benutzerdefinierter HTTP-Statuscode, der Standardwert ist 403, was praktisch ist, um die richtige Hotlinking-Anfrage zu finden
„rewrite ^/ http://leech.c1gstudio.com/leech.gif;“ Zeigt ein Anti-Hotlink-Bild an
„access_log off;“ Keine Zugriffsprotokolle aufzeichnen und Stress reduzieren
„expires 3d“ Alle Browser-Cache-Dateien für 3 Tage
1.
Speicherort
~* ^.+.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {2.
valid_referers
keine blockiert *.c1gstudio.com *.c1gstudio.net localhost 208.97.167.194;3.
if
($invalid_referer) {4.
umschreiben ^/ http://leech.c1gstudio.com/leech.gif;5.
return 412;6.
Pause;7.
}8.
access_log off;9.
root /opt/lampp/htdocs/web;10
läuft 3d ab;
11 Pause;
12.
}
Nur feste IP-Adressen für den Zugriff auf die Website zulassen und ein Passwort hinzufügen
1.
Wurzel
/opt/htdocs/www;
2.
erlauben
208.97.167.194;
3.
erlauben
222.33.1.2;
4.
erlauben
231.152.49.4;
5. ablehnen
alle;
6. auth_basic
"C1G_ADMIN";
7. auth_basic_user_file
htpasswd;
Dateien in mehrstufigen Verzeichnissen in eine Datei konvertieren, um den SEO-Effekt zu verbessern
/job-123-456-789.html verweist auf /job/123/456/ 789.html
1. umschreiben
^/job-([0-9]+)-([0-9]+)-([0-9]+).html$ /job/$1/$2/jobshow_$3.html last;
Verweisen Sie einen Ordner im Stammverzeichnis auf das Verzeichnis der zweiten Ebene.
Zum Beispiel zeigt /shanghaijob/ auf /area/shanghai/.
Wenn Sie „Last“ auf „Permanent“ ändern, ist dies die Browseradresse Die Leiste zeigt /location/shanghai/
1.
^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;Ein Problem mit dem obigen Beispiel besteht darin, dass beim Zugriff auf / Shanghai Wird nicht übereinstimmen
1.
umschreiben
^/([0-9a-z]+)job$ /area/$1/ last;2.
umschreiben
^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;Auf diese Weise kann auch auf /shanghai zugegriffen werden, aber auf der Seite Der relative Link kann nicht verwendet werden. Die tatsächliche Adresse von ./list_1.html lautet beispielsweise /area /shanghia/list_1.html, wodurch sie zu /list_1.html wird.
Es funktioniert nicht, wenn ich einen automatischen Sprung hinzufüge (-d $request_filename) Es gibt eine Bedingung, dass es sich um ein echtes Verzeichnis handeln muss, aber mein Umschreiben ist nicht so es gibt keine Wirkung
1.
wenn
(-d $request_filename){2.
umschreiben
^/(.*)([^/])$ http://$host/$1$2/ permanent;3.
}Es wird einfacher, sobald Sie den Grund kennen, lassen Sie mich manuell springen
1.
umschreiben
^/([0-9a-z]+)job$ /$1job/ permanent;2.
umschreiben
^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;Umleiten, wenn die Datei und das Verzeichnis nicht vorhanden sind:
1.
wenn
(!-e $request_filename) {2.
proxy_pass
http://127.0.0.1;3.
}Domainnamensprung
1. Server
2.
{
3.
Hören
Servername jump.c1gstudio.com;
5.
index index.html index.htm index.php;
6.
/opt/lampp/htdocs/www;
7.
umschreiben ^/ http://www.c1gstudio.com/;8.
access_log off;
9.
}
Umleitung mehrerer Domänennamen
1.
Servername
www.c1gstudio.com www.c1gstudio.net;
2.
index index.html index.htm index.php;
3.
($host ~ "c1gstudio.net") {
5.
umschreiben
^(.*) http://www.c1gstudio.com$1 permanent;
6.
}
Sprung des Domainnamens der dritten Ebene
1.
wenn
($http_host ~* "^(.*).i.c1gstudio.com$") {
2.
umschreiben
^(.*) http://top.yingjiesheng.com$1;
3.
Pause;
4.
}
Domain Name Mirror
1. Server
2.
{
3.
Hören
aber aber
index index.html index.htm index.php;
6.
/opt/lampp/htdocs/www;
7.
rewrite ^/(.*) http://www.c1gstudio.com/$1 last;8.
access_log off;
9.
}
Das Obige stellt die Standortkonfiguration von Nginx vor, einschließlich verschiedener Aspekte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.