See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 11719|Vastuse: 1

[Veeb] Näide illustreerib ümberkirjutamise reeglit Nginxis

[Kopeeri link]
Postitatud 05.12.2014 22:45:25 | | |
Üks. Regulaarse avaldise vaste, kus:
* ~ on tähe-tundlik sobitamine
* ~* on tähtsusetundlik sobivus
* !~ ja !~* on vastavalt täpitundlikud ja käänutundlikud erinevused
Kaks. fail ja kataloog sobivad, kus:
* -f ja !-f kasutatakse faili olemasolu määramiseks
* -d ja !-d kasutatakse kataloogi olemasolu määramiseks
* -e ja !-e kasutatakse faili või kataloogi olemasolu määramiseks
* -x ja !-x kasutatakse selleks, et määrata, kas fail on käivitatav või mitte
3. Ümberkirjutamiskäsu viimane parameeter on lipumärk, mis on märgitud:
1.viimane on ekvivalentne apache'i [L] märgiga, mis tähendab ümberkirjutamist.
2. Paus Pärast selle reegli sobitamist lõpetatakse sobitamine ja järgnevaid reegleid enam ei sobitata.
3.Redirect tagastab 302 ajutise ümbersuunamise ning brauseri aadress kuvab pärast hüpet URL-aadressi.
4.Permanent return 301 permanent ümbersuunamine, brauseri aadress kuvab pärast hüpet URL-aadressi.


Kasuta viimast ja katkestust URI ümberkirjutuste rakendamiseks ning brauseri aadressiriba jääb muutumatuks. Ja nende vahel on väike erinevus, varjunime käsk peab olema märgitud viimasena; Kui kasutad proxy_pass direktiive, pead kasutama katkestussilti. Pärast viimase sildi täitmist selles ümberkirjutamisreeglis on see serveris{......} Tag alustab taotlust uuesti, samal ajal kui Break silt lõpetab matši pärast reeglite sobitamise lõppu.
Näiteks: kui suuname URL-i nagu /photo/123456 /path/to/photo/12/1234/123456.png
kirjuta ümber "/photo/([0-9]{2})([0-9]{2})([0-9]{2})"/path/to/photo/$1/$1$2/$1$2$3.png ;


Neli. NginxRewrite reegel


1. Katkesta käsk
Kasutuskeskkond: server, asukoht, kui;
Direktiiv lõpetab kehtiva reeglistiku ega käsitle enam ümberkirjutamise direktiivi.


2. Kui direktiiv
Kasutuskeskkond: server, asukoht
Seda käsku kasutatakse tingimuse täitmise kontrollimiseks ja kui jah, siis lause täitmiseks lokkis breketite sees. Kui käsk ei toeta pesastamise ega mitut tingimust && ja || Ravi.


3. Tagasta käsk
süntaks: returncode ;
Kasutuskeskkond: server, asukoht, kui;
Seda käsku kasutatakse reegli täitmise lõpetamiseks ja kliendile staatuskoodi tagastamiseks.
Näide: Kui külastatud URL lõpeb ".sh" või ".bash", tagastatakse 403 staatuskood
asukoht ~ .*\. (sh|bash)?$
{
tagasipöördumine 403;
}


4. Kirjuta käsk ümber
Süntaks: rewriteregex asenduslipp
Kasutuskeskkond: server, asukoht, kui
See direktiiv suunab URI avaldise alusel ümber või muudab stringi. Käsud täidetakse konfiguratsioonifailis olevas järjekorras. Pane tähele, et avaldiste ümberkirjutamine kehtib ainult suhteliste teede puhul. Kui soovid hostinimi siduda, peaksid kasutama if-lauseid, näiteks allpool:
if( $host ~* www\.(. *) )
{
seatud $host_without_www $1;
ümberkirjuta ^(.*)$ http://$host_without_www$1permanent;
}


5. Seadista käsk
Süntaks: setvariable value; Vaikimisi: puudub; Kasutuskeskkond: server, asukoht, kui;
Seda direktiivi kasutatakse muutuja defineerimiseks ja sellele väärtuse määramiseks. Muutuja väärtus võib olla tekst, muutuja või tekstimuutujate liit.
Näide: set$varname "tere maailm";


6.Uninitialized_variable_warn juhised
Süntaks: uninitialized_variable_warnon|off
Kasutuskeskkond: http, server, asukoht, kui
Seda käsku kasutatakse hoiatussõnumi sisse- ja väljalülitamiseks initsialiseerimata muutujate puhul ning vaikimisi väärtus on Sees.




Viis. Nginx Rewrite reeglite kirjutamise näide
1. Kui ligipääsetav fail ja kataloog ei eksisteeri, suuna edasi teatud php faili juurde
if( !-e $request_failinimi )
{
ümberkirjuta ^/(.*)$ index.php viimasena;
}


2. Kataloogi vahetus /123456/xxxx ====> /xxxx?id=123456
kirjuta ümber ^/(\d+)/(.+)/ /$2?id=$1 viimasena;


3. Kui klient kasutab IE brauserit, suunab see /ie kataloogi
if( $http_user_agent ~ MSIE)
{
ümberkirjutamine ^(.*)$ /ie/$1 katkestus;
}


4. Keela juurdepääs mitmele kataloogile
asukoht ~ ^/(cron|mallid)/
{
eitada kõike;
paus;
}


5. Keela juurdepääs failidele, mis algavad /data
asukoht ~ ^/andmed
{
eitada kõike;
}


6. Keelata juurdepääs failidele, mille sufiksid on .sh, .flv, .mp3
asukoht ~ .*\. (sh|flv|mp3)$
{
tagasipöördumine 403;
}


7. Määra brauseri vahemälu aeg teatud tüüpi failide jaoks
asukoht ~ .*\. (gif|jpg|jpeg|png|bmp|swf)$
{
aegub 30d;
}
asukoht ~ .*\. (js|css)$
{
aegub 1 tundi;
}


8. Määra favicon.ico ja robots.txt aegumisajad;
Siin on favicon.ico 99 päeva, robots.txt 7 päeva ja 404 vealogi ei ole registreeritud
asukoht ~(favicon.ico) {
log_not_found minema;
aegub 99d;
paus;
}
asukoht ~(robots.txt) {
log_not_found minema;
aegub 7d;
paus;
}


9. Määrake teatud dokumendi kehtivusaeg; See on 600 sekundit ja ligipääsulogisid ei salvestata
asukoht ^~ /html/scripts/loadhead_1.js {
access_log ära;
root /opt/lampp/htdocs/web;
aegub 600;
paus;
}


10. Anti-hotlink failid ja määratud aegumisajad
Return412 siin on kohandatud HTTP staatuskood, mis vaikimisi on 403, mis on mugav õige hotlingi päringu leidmiseks
"kirjuta ümber ^/; "Näitab pilti anti-hotlingist
"access_log ära;" Ligipääsulogisid ei salvestata, mis vähendab stressi
"3D aegub" 3 päeva brauseri vahemälu kõigi failide jaoks


asukoht ~*^.+\. (jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
valid_referers blokeeritud *.xx.com*.xx.net localhost 208.97.167.194;
if ($invalid_referer) {
ümberkirjutamine ^/;
tagasipöördumine 412;
paus;
}
access_log ära;
root /opt/lampp/htdocs/web;
aegub 3d;
paus;
}


11. Luba veebilehele ainult fikseeritud IP-aadressi parooliga


root /opt/htdocs/www;
luba 208.97.167.194;
luba 222.33.1.2;
luba 231.152.49.4;
eitada kõike;
auth_basic "C1G_ADMIN";
auth_basic_user_file htpasswd;


12Muuda mitmetasandilistes kataloogides failid üheks failiks, et parandada SEO efekte
/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 viimane;


13. Suuna ümber, kui faile ja katalooge ei eksisteeri:


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


14. Suuna juurkataloogi kaust 2. taseme katalle
Näiteks /shanghaijob/ osutab /area/shanghai/
Kui vahetad viimase püsivaks, siis brauseri aadressiriba on /location/shanghai/
ümberkirjuta ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
Probleem ülaltoodud näitega on see, et see ei klapi /shanghai ligipääsul
kirjuta ümber ^/([0-9a-z]+)job$ /area/$1/ viimasena;
ümberkirjuta ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
See tee/shanghai on samuti ligipääsetav, kuid lehe suhtelised lingid pole saadaval,
Kui ./list_1.html tegelik aadress on /area/shanghia/list_1.html muutub /list_1.html-ks, muutes selle ligipääsmatuks.
Siis ei saa automaatset hüppamist lisada
(-d $request_filename) puhul on tingimus, et see peab olema päris kataloog, ja minu ümberkirjutus ei ole, seega see ei mõjuta
if (-d $request_filename){
ümberkirjuta ^/(.*)([^/])$ http://$host/$1$2/permanent;
}
See on lihtne, kui põhjus on teada, las ma hüppan käsitsi
ümberkirjuta ^/([0-9a-z]+)job$ /$1job/püsiv;
ümberkirjuta ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;


15. Domeeninimede vahetamine
Server
{
kuula 80;
server_name jump.linuxidc.com;
indeks index.html index.htm index.php;
root /opt/lampp/htdocs/www;
ümberkirjuta ^/ http://www.xx.com/;
access_log ära;
}


16. Mitme domeeni pööramine
server_name www.xx.comwww.xx.com;
indeks index.html index.htm index.php;
root /opt/lampp/htdocs;
if ($host ~ "linuxidc\.net") {
ümberkirjutamine ^(.*) http://www.xx.com$1permanent;
}


6. nginx globaalsed muutujad
arg_PARAMETER #这个变量包含GET请求中, kui on olemas muutuv PARAMEETER.
args #这个变量等于请求行中 (GET request) parameetrid, nt foo=123&bar=blahblah;
binary_remote_addr #二进制的客户地址.
body_bytes_sent #响应时送出的body字节数数量. Need andmed on täpsed isegi siis, kui ühendus katkeb.
content_length #请求头中的Content pikkuse väljakuga.
content_type #请求头中的Content-tüüpi väli.
cookie_COOKIE #cookie COOKIE muutuja väärtust
document_root #当前请求在root指令中指定的值.
document_uri #与uri相同.
hosti #请求主机头字段, muidu serveri nimi.
hostname #Set masina hostinimele, mida tagastab gethostname
http_HEADER
is_args #如果有args参数 on see muutuja võrdne "?"-ga, muidu "", nullväärtusega.
http_user_agent #客户端agent信息
http_cookie #客户端cookie信息
limit_rate #这个变量可以限制连接速率.
query_string #与args相同.
request_body_file #客户端请求主体信息的临时文件名.
request_method #客户端请求的动作, tavaliselt GET või POST.
remote_addr #客户端的IP地址.
remote_port #客户端的端口.
remote_user #已经经过Auth Kasutajanimi on valideeritud Basic mooduli poolt.
request_completion #如果请求结束, sea see OK-iks. Tühjenda, kui päring pole lõpetatud või kui taotlus ei ole taotlusahela viimane.
request_method #GET或POST
request_filename #当前请求的文件路径, mis genereeritakse root- või alias-direktiivide ja URI-päringute poolt.
request_uri #包含请求参数的原始URI ei sisalda see hostnime, nt "/foo/bar.php?arg=baz". ei saa muuta.
skeemi #HTTP方法 (nt http, https).
server_protocol #请求使用的协议, tavaliselt HTTP/1.0 või HTTP/1.1.
server_addr #服务器地址 saab selle väärtuse määrata pärast süsteemikõne lõpetamist.
server_name #服务器名称.
server_port #请求到达服务器的端口号.


Seitse. Apache ja Nginxi reeglite kirjavahetus
Apache'i RewriteCond vastab Nginxi omale, kui
Apache'i RewriteRule vastab Nginxi ümberkirjutusele
Apache [R] vastab Nginxi suunamisele
[P] vastab apache keeles viimasele Nginxis
Apache [R,L] vastab Nginxi ümbersuunamisele
Apache'i [P,L] vastab Nginxi viimasele
Apache [PT,L] vastab Nginxi viimasele


Näiteks lubada kindlal domeeninimel sellele saidile ligi pääseda ja alati pöörduda www.xx.com teiste domeeninimede poole
  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$ )
{
seade $allowHost '1';
}
if( $host ~* ^localhost )
{
seade $allowHost '1';
}
if( $host ~* ^192\.168\.1\.(. *?) $ )
{
seade $allowHost '1';
}
if( $allowHost !~ '1' )
{
rewrite ^/(.*)$ http://www.xx.comredirect ;
}





Eelmine:Sina Weibo skaneerib koodi, et maksta 1 senti, et saada aasta lõpu boonus kuni 2015. aasta jüaanini
Järgmine:CMD5 murrab Windowsi süsteemiadministraatori parooli
Postitatud 07.12.2014 17:25:05 |
Lugemine ja postitamine on voorus
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com