Egy. Regularkifejezés egyezés, ahol: * ~ kis- és nagybetűérzékeny egyeztetés * ~* egy eset-érzékeny egyezés a * !~ és !~* ön-kisítésérzékeny és ön-visszajelzésű eltérések Kettő. fájl és könyvtár egyeznek, ahol: * -f és !-f arra használják, hogy megállapítsák, létezik-e fájl * -d és !-d alapján meghatározzák, létezik-e könyvtár * -e és !-e jeleket használnak annak meghatározására, hogy létezik-e fájl vagy könyvtár * -x és !-x alapján meghatározzák, hogy egy fájl végrehajtható-e vagy sem 3. Az újraírási utasítás utolsó paramétere a zászlójelzés, amelyet a következőképpen jelölnek: Az 1.utolsó az apache [L] jelének felel meg, ami átírást jelent. 2. Megszakítás A szabály egyeztetése után a párosítás megszűnik, és a következő szabályok már nem lesznek összeegyeztetve. A 3.redirect 302 ideiglenes átirányítást ad vissza, és a böngésző címe az ugrás után megjeleníti az URL-címet. 4.Permanent return 301 állandó átirányítás, a böngésző címe az ugrás után megjeleníti az URL-címet.
Használd az utolsó és a szünet gombot az URI átírások megvalósításához, és a böngésző címsora változatlan marad. És van egy kis különbség a kettő között: az álnév parancs használatával utolsóként kell jelölni; Ha proxy_pass utasításokat használsz, a break címkét kell használnod. Miután az utolsó tag elindult ebben az átírási szabályban, az a szerveren{......} lesz a tag újraindítja a kérést, míg a break tag megszakítja a mérkőzést, miután a szabály egyeztetése befejeződött. Például: ha egy /photo/123456 URL-t irányítunk át /path/to/photo/12/1234/123456.png írd át "/photo/([0-9]{2})([0-9]{2})([0-9]{2})"/path/to/photo/$1/$1$2/$1$2$3.png ;
Négy. NginxRewrite szabály
1.Break parancs Használati környezet: szerver, helyszín, ha; Az irányelv kiegészíti a jelenlegi szabálykészletet, és már nem kezeli az újraírási utasítást.
2. Ha utasítás Használati környezet: szerver, hely Ezt az utasítást arra használják, hogy ellenőrizzék, teljesül-e egy feltétel, és ha igen, akkor végrehajtsák a kijelentést a göndör fogszabályzókban. Az If parancs nem támogatja a fészkelést, és nem támogatja több feltételt && és || Kezelés.
3. Visszaküld parancsot szintaxis: returncode ; Használati környezet: szerver, helyszín, ha; Ezt az utasítást arra használják, hogy lefejezzük a szabály végrehajtását, és visszaküldjük az ügyfélnek az állapotkódot. Példa: Ha a meglátogatott URL ".sh" vagy ".bash" jelzéssel végződik, akkor egy 403 státuszkódot adnak vissza helyszín ~ .*\. (sh|bash)?$
{ vissza 403;
}
4. Írd át a parancsot Szintaxis: rewriteregex helyettesítő zászló Használati környezet: szerver, helyszín, ha Ez az utasítás az URI-t az kifejezés alapján irányítja, vagy módosítja a karakterláncot. Az utasítások a konfigurációs fájl sorrendjében hajtják végre. Fontos megjegyezni, hogy az újraírás csak relatív utakra érvényes. Ha hosztneveket szeretnél párosítani, használj if utasításokat, például az alábbiakban: ha( $host ~* www\.(. *) )
{ $host_without_www $1; újraírni ^(.*)$ http://$host_without_www$1permanent;
}
5.Parancs beállítása Szintaxis: setváltozó érték; Alapértelmezés: nincs; Használati környezet: szerver, helyszín, ha; Ezt az utasítást használják egy változó definiálására és annak értékek hozzárendelésére. Egy változó értéke lehet szöveg, változó vagy szövegváltozók uniója. Példa: set$varname "hello world";
6.Uninitialized_variable_warn utasítások Szintaxis: uninitialized_variable_warnon|off Használati környezet: http, szerver, helyszín, ha Ezt a parancsot használják a figyelmeztető üzenet be- és kikapcsolására incializálatlan változók esetén, és az alapértelmezett érték On.
Öt. Nginx Rewrite szabályírás példa 1. Ha a hozzáfért fájl és könyvtár nem létezik, irányítsunk át egy bizonyos php fájlra if( !-e $request_filename )
{ újraírni ^/(.*)$ index.php utoljára;
}
2. Könyvtárcsere /123456/xxxx ====> /xxxx?id=123456 újraírni ^/(\d+)/(.+)/ /$2?id=$1 utoljára;
3. Ha az ügyfél IE böngészőt használ, az átirányítja a /ie könyvtárra if( $http_user_agent ~ MSIE)
{ újraírni ^(.*)$ /ie/$1 megszakítás;
}
4. Több könyvtárhoz való hozzáférés letiltása helyszín ~ ^/(cron|sablonok)/
{ tagadni mindent; szünet;
}
5. Tiltsd le a /data betűvel kezdődő fájlok hozzáférését helyszín ~ ^/data
{ tagadni mindent;
}
6. Tiltsa meg a fájl hozzáadását, amelyeknek fájl tagtagnevei .sh, .flv, .mp3 helyszín ~ .*\. (sh|flv|mp3)$
{ vissza 403;
}
7. Állítsd be a böngésző gyorsítótár idejét bizonyos fájltípusokhoz helyszín ~ .*\. (gif|jpg|jpeg|png|bmp|swf)$
{ 30 pennyi lejárat;
} helyszín ~ .*\. (js|css)$
{ 1 óra lejár;
}
8. Határozzuk meg a lejárati időket favicon.ico és robots.txt számára; Itt a favicon.ico 99 nap, a robots.txt 7 nap, és a 404-es hibanapló nem van rögzítve hely ~(favicon.ico) { log_not_found el; 99d lejár; szünet;
} helyszín ~(robots.txt) { log_not_found el; 7d lejárat; szünet;
}
9. Határozd meg egy adott dokumentum lejárati idejét; Ez 600 másodperc, és a hozzáférési naplók nem kerülnek rögzítésre hely ^~ /html/scripts/loadhead_1.js { access_log el; gyökér /opt/lampp/htdocs/web; 600 lejárati ideje; szünet;
}
10. Anti-hotlink fájlok és beállított lejárati idők A Return412 egy egyedi HTTP státuszkód, amely alapértelmezett 403-at használ, ami kényelmes a megfelelő hotlink kérés megtalálásához "Írd át ^/ ; "Egy anti-hotlink képét mutatja "access_log el;" Nem rögzítenek hozzáférési naplókat, ami csökkenti a stresszt "Lejár a 3D" 3 nap böngészőgyorsítótár minden fájlhoz
helyszín ~*^.+\. (jpg|jpeg|gif|png|swf|rar|zip|css|js)$ { valid_referers nem blokkolva *.xx.com*.xx.net localhost 208.97.167.194; if ($invalid_referer) { Újraírás ^/ ; visszatérés 412; szünet;
} access_log el; gyökér /opt/lampp/htdocs/web; 3D-s lejár; szünet;
}
11. Csak jelszóval engedélyezett fix IP-hozzáférést engedélyez a weboldalra
root /opt/htdocs/www; engedélyezze a 208.97.167.194; engedélyezze a 222.33.1.2; engedélyezze a 231.152.49.4; tagadni mindent; auth_basic "C1G_ADMIN"; auth_basic_user_file htpasswd;
12Többszintű könyvtárakban lévő fájlokat egy fájlba alakítani a SEO hatások javítása érdekében
/job-123-456-789.html 指向/job/123/456/789.html
rewrite^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html utolsó;
13. Átirányítás, ha fájlok és könyvtárak nem léteznek:
if (!-e $request_filename) { proxy_pass http://127.0.0.1;
}
14. Irányíts egy mappát a gyökérkönyvtárban a 2. szintű könyvtárra Például a /shanghaijob/ a /area/shanghai/ jelzésre mutat Ha utoljára állandóra váltasz, akkor a böngésző címsora /location/shanghai/ lesz újraírni ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last; A fenti példával az a probléma, hogy nem egyezik meg /shanghai hozzáféréskor újraírni ^/([0-9a-z]+)job$ /area/$1/ utoljára; újraírni ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last; Ez a mód/Sanghaj is elérhető, de az oldalon lévő relatív linkek nem elérhetők, Ha ./list_1.html valódi cím /area/shanghia/list_1.html lesz /list_1.html, így elérhetetlenné válik. Akkor nem tudok automatikus ugrást hozzáadni (-d $request_filename) feltétele van, hogy valós könyvtárnak kell lennie, és az én átírásom nem az, így nincs hatása if (-d $request_filename){ újraírni ^/(.*)([^/])$ http://$host/$1$2/permanent;
} Egyszerű, ha tudod az okot, hadd ugorjak kézzel újraírni ^/([0-9a-z]+)job$ /$1job/permanent; újraírni ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
15. Domain névugrás szerver
{ Hallgasd 80; server_name jump.linuxidc.com; index index.html index.htm index.php; gyökér /opt/lampp/htdocs/www; újraírni ^/ http://www.xx.com/; access_log el;
}
16. Többtartományos forgatás server_name www.xx.comwww.xx.com; index index.html index.htm index.php; gyökér /opt/lampp/htdocs; if ($host ~ "linuxidc\.net") { újraírás ^(.*) http://www.xx.com$1permanent;
}
6. nginx globális változók arg_PARAMETER #这个变量包含GET请求中, ha van változó PARAMÉTER. args #这个变量等于请求行中 (GET kérés) paraméterek, pl. foo=123&bar=blahblah; binary_remote_addr #二进制的客户地址. body_bytes_sent #响应时送出的body字节数数量. Ez az adat akkor is pontos, ha a kapcsolat megszakad. content_length #请求头中的Content hosszúságú mező. content_type #请求头中的Content típusú mező. cookie_COOKIE #cookie a COOKIE változó értékét document_root #当前请求在root指令中指定的值. document_uri #与uri相同. A #请求主机头字段 a szerver neve. a hostname #Set a gép hostneve, amelyet gethostname adott vissza http_HEADER is_args #如果有args参数 ez a változó egyenlő a "?"-vel, egyébként ""-vel, ami nullérték. http_user_agent #客户端agent信息 http_cookie #客户端cookie信息 limit_rate #这个变量可以限制连接速率. query_string #与args相同. request_body_file #客户端请求主体信息的临时文件名. request_method #客户端请求的动作, általában GET vagy POST. remote_addr #客户端的IP地址. remote_port #客户端的端口. remote_user #已经经过Auth Felhasználónevet az Alap modul validálja. request_completion #如果请求结束, állítsd OK-ra. Üres, ha a kérés nincs befejezve, vagy ha nem az utolsó a kérésláncban. request_method #GET或POST request_filename #当前请求的文件路径, amelyeket root vagy alias utasítások, valamint URI kérések generálnak. request_uri #包含请求参数的原始URI nem tartalmazza a hosztnevet, például "/foo/bar.php?arg=baz". nem módosítható. séma #HTTP方法 (pl. http, https). server_protocol #请求使用的协议, általában HTTP/1.0 vagy HTTP/1.1. server_addr #服务器地址 ez az érték a rendszerhívás befejezése után meghatározható. server_name #服务器名称. server_port #请求到达服务器的端口号.
Hét. Az Apache és a Nginx szabályok közötti levelezés Apache RewriteCondja megfelel Nginx ha Az Apache RewriteRule megfelel Nginx átírásának Apache [R] a Nginx átirányításának felel meg [P] apacsban a Nginx utolsó részének felel meg Apache [R,L] a Nginx átirányításának felel meg Apache [P,L] a Nginx utolsó példányának felel meg Apache [PT,L] a Nginx utolsó testének felel meg
Például engedélyezzük egy meghatározott domainnév hozzáférését erre az oldalra, és mindig www.xx.com más domainnevekhez forduljunk Apache: RewriteCond %{HTTP_HOST} !^(.*?) \.aaa\.com$[NC] RewriteCond %{HTTP_HOST} !^localhost$ RewriteCond %{HTTP_HOST}!^192\.168\.0\. (.*?) $ RewriteRule ^/(.*)$ http://www.xx.com[R,L]
Nginx: if( $host ~* ^(.*)\.aaa\.com$ )
{ $allowHost '1';
} if( $host ~* ^localhost )
{ $allowHost '1';
} if( $host ~* ^192\.168\.1\.(. *?) $ )
{ $allowHost '1';
} ha( $allowHost !~ '1' )
{ újraírni ^/(.*)$ http://www.xx.comredirect ;
}
|