Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 11719|Atsakyti: 1

[Žiniatinklis] Pavyzdys iliustruoja "Nginx" perrašymo taisyklę

[Kopijuoti nuorodą]
Paskelbta 2014-12-05 22:45:25 | | |
Vienas. Reguliaraus reiškinio atitikmuo, kur:
* ~ yra didžiųjų ir mažųjų raidžių atitikimas
* ~* yra atitikmuo be didžiųjų ir mažųjų raidžių
* !~ ir !~* yra atitinkamai didžiųjų ir mažųjų raidžių neatitikimai
Du. failo ir katalogo atitiktis, kur:
* -f ir !-f naudojami nustatyti, ar failas egzistuoja
* -d ir !-d naudojami norint nustatyti, ar katalogas egzistuoja
* -e ir !-e naudojami norint nustatyti, ar failas arba katalogas egzistuoja
* -x ir !-x naudojami norint nustatyti, ar failas yra vykdomas, ar ne
3. Paskutinis perrašymo instrukcijos parametras yra vėliavėlės ženklas, pažymėtas:
1.last yra lygiavertis [L] ženklas apache, o tai reiškia perrašyti.
2. Pertrauka Baigus šios taisyklės suderinimą, gretinimas bus nutrauktas ir vėlesnės taisyklės nebebus suderintos.
3.peradresavimas grąžina 302 laikiną peradresavimą, o naršyklės adresas po šuolio parodys URL adresą.
4.nuolatinis grįžimas 301 nuolatinis peradresavimas, naršyklės adresas po šuolio parodys URL adresą.


Naudokite paskutinį ir pertrauką, kad įgyvendintumėte URI perrašymą, o naršyklės adreso juosta lieka nepakitusi. Ir tarp jų yra nedidelis skirtumas, slapyvardžio komandos naudojimas turi būti pažymėtas paskutiniu; Kai naudojate proxy_pass direktyvas, turite naudoti pertraukos žymą. Įvykdžius paskutinę žymę pagal šią perrašymo taisyklę, ji bus serveryje{......} žyma iš naujo inicijuoja užklausą, o pertraukos žyma nutraukia rungtynes pasibaigus taisyklių atitikčiai.
Pavyzdžiui: jei nukreipiame URL, pvz., /photo/123456 į /path/to/photo/12/1234/123456.png
perrašyti "/photo/([0-9]{2})([0-9]{2})([0-9]{2})"/path/to/photo/$1/$1$2/$1$2$3.png ;


Keturi. NginxPerrašyti taisyklę


1. pertraukos komanda
Naudojimo aplinka: serveris, vieta, if;
Direktyva užbaigia dabartinį taisyklių rinkinį ir nebetvarko perrašymo direktyvos.


2. Jei direktyva
Naudojimo aplinka: serveris, vieta
Ši instrukcija naudojama patikrinti, ar įvykdyta sąlyga, ir, jei taip, vykdyti sakinį garbanotuose skliaustuose. Komanda If nepalaiko įdėjimo ir nepalaiko kelių sąlygų && ir || Gydymas.


3. Grįžimo komanda
sintaksė: grąžinimo kodas ;
Naudojimo aplinka: serveris, vieta, if;
Ši instrukcija naudojama norint užbaigti taisyklės vykdymą ir grąžinti būsenos kodą klientui.
Pavyzdys: jei aplankytas URL baigiasi ".sh" arba ".bash", grąžinamas 403 būsenos kodas
vieta ~ .*\. (sh|bash)?$
{
grąžinti 403;
}


4. Perrašykite komandą
Sintaksė: rewriteregex pakeitimo vėliavėlė
Naudojimo aplinka: serveris, vieta, jei
Ši direktyva nukreipia URI pagal išraišką arba modifikuoja eilutę. Instrukcijos vykdomos konfigūracijos faile nurodyta tvarka. Atkreipkite dėmesį, kad išraiškų perrašymas galioja tik santykiniams keliams. Jei norite susieti pagrindinio kompiuterio pavadinimus, turėtumėte naudoti if teiginius, pvz.:
jei( $host ~* www\.(. *) )
{
nustatyti $host_without_www $1;
perrašyti ^(.*)$ http://$host_without_www$1permanent;
}


5. Nustatyti komandą
Sintaksė: setvariable value; Numatytasis: nėra; Naudojimo aplinka: serveris, vieta, if;
Ši direktyva naudojama kintamajam apibrėžti ir jam priskirti reikšmę. Kintamojo reikšmė gali būti tekstas, kintamasis arba teksto kintamųjų sąjunga.
Pavyzdys: set$varname "sveikas pasauli";


6.Uninitialized_variable_warn instrukcijos
Sintaksė: uninitialized_variable_warnon|off
Naudojimo aplinka: http, serveris, vieta, jei
Ši komanda naudojama įjungti ir išjungti įspėjamąjį pranešimą apie neinicijuotus kintamuosius, o numatytoji reikšmė yra Įjungta.




Penki. Nginx Perrašyti taisyklių rašymo pavyzdys
1. Kai pasiekiamas failas ir katalogas neegzistuoja, nukreipti į tam tikrą php failą
IF( !-e $request_failo pavadinimas )
{
perrašyti ^/(.*)$ index.php paskutinis;
}


2. Katalogų apsikeitimas /123456/xxxx ====> /xxxx?id=123456
perrašyti ^/(\d+)/(.+)/ /$2?id=$1 paskutinis;


3. Jei klientas naudoja IE naršyklę, jis nukreipia į /ie katalogą
if( $http_user_agent ~ MSIE)
{
perrašyti ^(.*)$ /ie/$1 pertrauka;
}


4. Išjunkite prieigą prie kelių katalogų
vieta ~ ^/(cron|šablonai)/
{
neigti visus;
pertrauka;
}


5. Išjunkite prieigą prie failų, prasidedančių /data
vieta ~ ^/data
{
neigti visus;
}


6. Uždrauskite prieigą prie failų su failų priesagų pavadinimais .sh, .flv .mp3
vieta ~ .*\. (sh|flv|mp3)$
{
grąžinti 403;
}


7. Nustatykite tam tikrų tipų failų naršyklės talpyklos laiką
vieta ~ .*\. (gif|jpg|jpeg|png|bmp|swf)$
{
baigiasi 30d;
}
vieta ~ .*\. (js|css)$
{
galioja 1 val.;
}


8. Nustatykite favicon.ico ir robots.txt galiojimo laiką;
Čia favicon.ico yra 99 dienos, o robots.txt yra 7 dienos, o 404 klaidų žurnalas neregistruojamas
Vieta ~(favicon.ico) {
log_not_found išjungti;
baigiasi 99d;
pertrauka;
}
vieta ~(robots.txt) {
log_not_found išjungti;
baigiasi 7d;
pertrauka;
}


9. Nustatykite tam tikro dokumento galiojimo laiką; Tai yra 600 sekundžių, o prieigos žurnalai neįrašomi
vieta ^~ /html/scripts/loadhead_1.js {
access_log išjungti;
root /opt/lampp/htdocs/web;
baigiasi 600;
pertrauka;
}


10. Anti-hotlink failai ir nustatykite galiojimo laiką
Return412 čia yra pasirinktinis HTTP būsenos kodas, kuris pagal numatytuosius nustatymus yra 403, kuris yra patogus ieškant teisingos karštosios nuorodos užklausos
"perrašyti ^/; "Rodo anti-hotlink vaizdą
"access_log išjungti;" Prieigos žurnalai neįrašomi, todėl sumažėja stresas
"Baigiasi 3D" 3 dienų naršyklės talpykla visiems failams


Vieta ~*^.+\. (jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
valid_referers nė vienas neužblokuotas *.xx.com*.xx.net localhost 208.97.167.194;
if ($invalid_referer) {
perrašyti ^/;
grąžinti 412;
pertrauka;
}
access_log išjungti;
root /opt/lampp/htdocs/web;
baigiasi 3d;
pertrauka;
}


11. Leiskite tik fiksuotą IP prieigą prie svetainės su slaptažodžiu


šaknis /opt/htdocs/www;
leisti 208.97.167.194;
leisti 222.33.1.2;
leisti 231.152.49.4;
neigti visus;
auth_basic "C1G_ADMIN";
auth_basic_user_file htpasswd;


12Konvertuokite failus kelių lygių kataloguose į vieną failą, kad pagerintumėte SEO efektus
/job-123-456-789.html 指向/job/123/456/789.html


perrašyti^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html paskutinis;


13. Peradresuoti, kai failų ir katalogų nėra:


if (!-e $request_filename) {
proxy_pass http://127.0.0.1;
}


14. Nukreipkite šakninio katalogo aplanką į 2 lygio katalogą
Pavyzdžiui, /shanghaijob/ nurodo į /area/shanghai/
Jei pakeisite paskutinį į nuolatinį, naršyklės adreso juosta bus /location/shanghai/
perrašyti ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
Aukščiau pateikto pavyzdžio problema yra ta, kad jis nesutaps prisijungiant prie /shanghai
perrašyti ^/([0-9a-z]+)job$ /area/$1/ last;
perrašyti ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
Tokiu būdu / Šanchajus taip pat pasiekiamas, tačiau atitinkamos nuorodos puslapyje nėra,
Jei ./list_1.html tikrasis adresas yra /area/shanghia/list_1.html taps /list_1.html, todėl jis bus nepasiekiamas.
Tada negaliu pridėti automatinio šokinėjimo
(-d $request_filename) turi sąlygą, kad tai turi būti tikras katalogas, o mano perrašymas ne, todėl jis neturi jokio poveikio
if (-d $request_filename){
perrašyti ^/(.*)([^/])$ http://$host/$1$2/permanent;
}
Tai lengva padaryti žinant priežastį, leiskite man šokinėti rankiniu būdu
perrašyti ^/([0-9a-z]+)job$ /$1job/permanent;
perrašyti ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;


15. Domeno vardo šokinėjimas
serveris
{
klausytis 80;
server_name jump.linuxidc.com;
indekso index.html index.htm index.php;
šaknis /opt/lampp/htdocs/www;
perrašyti ^/ http://www.xx.com/;
access_log išjungti;
}


16. Kelių domenų pasukimas
server_name www.xx.comwww.xx.com;
indekso index.html index.htm index.php;
root /opt/lampp/htdocs;
if ($host ~ "linuxidc\.net") {
perrašyti ^(.*) http://www.xx.com$1permanent;
}


6. NGINX pasauliniai kintamieji
arg_PARAMETER #这个变量包含GET请求中, jei yra kintamasis PARAMETRAS.
argumentai #这个变量等于请求行中 (GET užklausa) parametrai, pvz., foo=123&bar=blahblah;
binary_remote_addr #二进制的客户地址.
body_bytes_sent #响应时送出的body字节数数量. Šie duomenys yra tikslūs, net jei ryšys nutrūksta.
content_length #请求头中的Content ilgio laukas.
content_type #请求头中的Content tipo laukas.
cookie_COOKIE #cookie kintamojo COOKIE reikšmę
document_root #当前请求在root指令中指定的值.
document_uri #与uri相同.
pagrindinis #请求主机头字段, kitu atveju serverio pavadinimas.
Pagrindinio kompiuterio pavadinimas #Set į kompiuterio pagrindinio kompiuterio pavadinimą, kurį grąžino GetHostName
http_HEADER
is_args #如果有args参数 šis kintamasis yra lygus "?", kitu atveju lygus "", nulinei reikšmei.
http_user_agent #客户端agent信息
http_cookie #客户端cookie信息
limit_rate #这个变量可以限制连接速率.
query_string #与args相同.
request_body_file #客户端请求主体信息的临时文件名.
request_method #客户端请求的动作, paprastai GET arba POST.
remote_addr #客户端的IP地址.
remote_port #客户端的端口.
remote_user #已经经过Auth Vartotojo vardas patvirtintas pagrindiniu moduliu.
request_completion #如果请求结束, nustatykite jį į Gerai. Tuščia, kai užklausa nebaigta arba jei užklausa nėra paskutinė užklausų grandinėje.
request_method #GET或POST
request_filename #当前请求的文件路径, sugeneruota naudojant root arba pseudonimo direktyvas ir URI užklausas.
request_uri #包含请求参数的原始URI, jame nėra pagrindinio kompiuterio pavadinimo, pvz., "/foo/bar.php?arg=baz". negalima modifikuoti.
schemos #HTTP方法 (pvz., http, https).
server_protocol #请求使用的协议, paprastai HTTP/1.0 arba HTTP/1.1.
server_addr #服务器地址, šią vertę galima nustatyti baigus sistemos iškvietimą.
server_name #服务器名称.
server_port #请求到达服务器的端口号.


Septyni. "Apache" ir "Nginx" taisyklių atitikimas
Apache RewriteCond atitinka Nginx, jei
"Apache" "RewriteRule" atitinka "Nginx" perrašymą
Apache [R] atitinka Nginx peradresavimą
[P] Apache atitinka paskutinį Nginx
Apache [R,L] atitinka Nginx peradresavimą
Apache [P,L] atitinka paskutinį Nginx
Apache [PT,L] atitinka paskutinį Nginx


Pavyzdžiui, leiskite nurodytam domeno vardui pasiekti šią svetainę ir visada kreipkitės į www.xx.com kitus domenų vardus
  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$ )
{
nustatyti $allowHost "1";
}
if( $host ~* ^localhost )
{
nustatyti $allowHost "1";
}
if( $host ~* ^192\.168\.1\.(. *?) $ )
{
nustatyti $allowHost "1";
}
jei( $allowHost !~ '1' )
{
perrašyti ^/(.*)$ http://www.xx.comredirect ;
}





Ankstesnis:"Sina Weibo" nuskaitė kodą, kad sumokėtų 1 centą, kad gautų metų pabaigos premiją iki 2015 m. juanių
Kitą:CMD5 nulaužia "Windows" sistemos administratoriaus slaptažodį
Paskelbta 2014-12-07 17:25:05 |
Skaitymas ir skelbimas atgal yra dorybė
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com