|
|
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į
|