|
|
Publicēts 05.12.2014 22:45:25
|
|
|

Viens. Regulārās izteiksmes atbilstība, kur: * ~ ir reģistrjutīga atbilstība * ~* ir reģistrjutīga atbilstība * !~ un !~* ir attiecīgi reģistrjutīgas un reģistrjutīgas neatbilstības Divi. failu un direktoriju atbilstība, kur: * -f un !-f tiek izmantoti, lai noteiktu, vai fails pastāv * -d un !-d tiek izmantoti, lai noteiktu, vai direktorijs pastāv * -e un !-e tiek izmantoti, lai noteiktu, vai fails vai direktorijs pastāv * -x un !-x tiek izmantoti, lai noteiktu, vai fails ir izpildāms vai nē 3. Pēdējais pārrakstīšanas instrukcijas parametrs ir karodziņa zīme, kas apzīmēta ar: 1.pēdējais ir ekvivalents [L] zīmei apache, kas nozīmē pārrakstīt. 2. Pārtraukums Pēc šī noteikuma saskaņošanas saskaņošana tiks pārtraukta un turpmākie noteikumi vairs netiks saskaņoti. 3.redirect atgriež 302 pagaidu novirzīšanu, un pārlūkprogrammas adrese parādīs URL adresi pēc lēciena. 4.pastāvīga atgriešanās 301 pastāvīga novirzīšana, pārlūkprogrammas adrese parādīs URL adresi pēc lēciena.
Izmantojiet pēdējo un pārtraukumu, lai ieviestu URI pārrakstīšanu, un pārlūkprogrammas adreses josla paliek nemainīga. Un starp abiem ir neliela atšķirība, izmantojot aizstājvārdu komandai jābūt atzīmētai ar pēdējo; Izmantojot proxy_pass direktīvas, jāizmanto pārtraukuma tags. Pēc tam, kad pēdējais tags ir izpildīts šajā pārrakstīšanas kārtulā, tas atradīsies serverī{......} Atzīme atkārtoti iniciē pieprasījumu, bet pārtraukuma atzīme pārtrauc spēli pēc kārtulas atbilstības pabeigšanas. Piemēram, ja mēs novirzām URL, piemēram, /photo/123456 uz /path/to/photo/12/1234/123456.png pārrakstīt "/photo/([0-9]{2})([0-9]{2})([0-9]{2})"/path/to/photo/$1/$1$2/$1$2$3.png ;
Četri. NginxRewrite noteikums
1.pārtraukuma komanda Lietošanas vide: serveris, atrašanās vieta, if; Direktīva pabeidz pašreizējo noteikumu kopu un vairs neapstrādā pārrakstīšanas direktīvu.
2) Ja direktīva Lietošanas vide: serveris, atrašanās vieta Šī instrukcija tiek izmantota, lai pārbaudītu, vai nosacījums ir izpildīts, un, ja tā, izpildiet paziņojumu cirtainās iekavās. Komanda If neatbalsta ligzdošanu un neatbalsta vairākus nosacījumus && un || Ārstēšana.
3. Atgriešanās komanda sintakse: atgriešanās kods ; Lietošanas vide: serveris, atrašanās vieta, if; Šī instrukcija tiek izmantota, lai izbeigtu noteikuma izpildi un atgrieztu klientam statusa kodu. Piemērs: ja apmeklētais URL beidzas ar ".sh" vai ".bash", tiek atgriezts statusa kods 403 atrašanās vieta ~ .*\. (sh|bash)?$
{ atgriešanās 403;
}
4. Pārrakstīt komandu Sintakse: rewriteregex aizstāšanas karodziņš Lietošanas vide: serveris, atrašanās vieta, ja Šī direktīva novirza URI, pamatojoties uz izteiksmi, vai modificē virkni. Instrukcijas tiek izpildītas konfigurācijas failā norādītajā secībā. Ņemiet vērā, ka izteiksmju pārrakstīšana ir derīga tikai relatīviem ceļiem. Ja vēlaties savienot pārī resursdatoru nosaukumus, izmantojiet if paziņojumus, piemēram, tālāk: if( $host ~* www\.(. *) )
{ iestatiet $host_without_www $1; pārrakstīt ^(.*)$ http://$host_without_www$1permanent;
}
5.Iestatīt komandu Sintakse: setmainīgā vērtība; Noklusējums: nav; Lietošanas vide: serveris, atrašanās vieta, if; Šī direktīva tiek izmantota, lai definētu mainīgo un piešķirtu tam vērtību. Mainīgā vērtība var būt teksts, mainīgais vai teksta mainīgo apvienojums. Piemērs: set$varname "sveika pasaule";
6.Uninitialized_variable_warn instrukcijas Sintakse: uninitialized_variable_warnon|izslēgts Lietošanas vide: http, serveris, atrašanās vieta, ja Šī komanda tiek izmantota, lai ieslēgtu un izslēgtu brīdinājuma ziņojumu par neinicializētiem mainīgajiem, un noklusējuma vērtība ir Ieslēgts.
Pieci. Nginx pārrakstīšanas noteikumu rakstīšanas piemērs 1. Ja piekļuves fails un direktorijs nepastāv, novirziet uz noteiktu php failu IF( !-e $request_faila nosaukums )
{ pārrakstīt ^/(.*)$ index.php pēdējo;
}
2. Direktoriju maiņa /123456/xxxx ====> /xxxx?id=123456 pārrakstīt ^/(\d+)/(.+)/ /$2?id=$1 pēdējais;
3. Ja klients izmanto IE pārlūkprogrammu, tas novirza uz /ie direktoriju if( $http_user_agent ~ MSIE)
{ pārrakstīt ^(.*)$ /ie/$1 pārtraukums;
}
4. Atspējot piekļuvi vairākiem direktorijiem atrašanās vieta ~ ^/(cron|veidnes)/
{ noliegt visu; pārtraukums;
}
5. Atspējot piekļuvi failiem, kas sākas ar /data atrašanās vieta ~ ^/dati
{ noliegt visu;
}
6. Aizliegt piekļuvi failiem ar failu sufiksu nosaukumiem .sh, .flv .mp3 atrašanās vieta ~ .*\. (sh|flv|mp3)$
{ atgriešanās 403;
}
7. Iestatiet pārlūkprogrammas kešatmiņas laiku noteiktiem failu veidiem atrašanās vieta ~ .*\. (gif|jpg|jpeg|png|bmp|swf)$
{ beidzas 30d;
} atrašanās vieta ~ .*\. (js|css)$
{ derīguma termiņš beidzas 1h;
}
8. Iestatiet favicon.ico un robots.txt derīguma termiņus; Šeit favicon.ico ir 99 dienas, un robots.txt ir 7 dienas, un 404 kļūdu žurnāls netiek reģistrēts atrašanās vieta ~(favicon.ico) { log_not_found izslēgts; beidzas 99d; pārtraukums;
} atrašanās vieta ~(robots.txt) { log_not_found izslēgts; beidzas 7d; pārtraukums;
}
9. Iestatiet noteikta dokumenta derīguma termiņu; Tas ir 600 sekundes, un piekļuves žurnāli netiek ierakstīti atrašanās vieta ^~ /html/scripts/loadhead_1.js { access_log izslēgts; sakne /opt/lampp/htdocs/web; beidzas 600; pārtraukums;
}
10. Anti-hotlink faili un iestatīts derīguma termiņš Return412 šeit ir pielāgots HTTP statusa kods, kas pēc noklusējuma ir 403, kas ir ērts, lai atrastu pareizo karstās saites pieprasījumu "pārrakstīt ^/ ; "Rāda anti-hotlink attēlu "access_log izslēgts;" Piekļuves žurnāli netiek reģistrēti, samazinot stresu "Beidzas 3D" 3 dienu pārlūkprogrammas kešatmiņa visiem failiem
atrašanās vieta ~*^.+\. (jpg|jpeg|gif|png|swf|rar|zip|css|js)$ { valid_referers nav bloķēts *.xx.com*.xx.net localhost 208.97.167.194; if ($invalid_referer) { pārrakstīt ^/ ; atgriešanās 412; pārtraukums;
} access_log izslēgts; sakne /opt/lampp/htdocs/web; beidzas 3d; pārtraukums;
}
11. Atļaut tikai fiksētu IP piekļuvi vietnei ar paroli
sakne /opt/htdocs/www; atļaut 208.97.167.194; atļaut 222.33.1.2; atļaut 231.152.49.4; noliegt visu; auth_basic "C1G_ADMIN"; auth_basic_user_file htpasswd;
12Konvertējiet failus daudzlīmeņu direktorijos vienā failā, lai uzlabotu SEO efektus
/job-123-456-789.html 指向/job/123/456/789.html
pārrakstīt^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html pēdējais;
13. Novirzīšana, ja faili un direktoriji nepastāv:
if (!-e $request_filename) { proxy_pass http://127.0.0.1;
}
14. Norādiet mapi saknes direktorijā uz 2. līmeņa direktoriju Piemēram, /shanghaijob/ norāda uz /area/shanghai/ Ja pēdējo maināt uz pastāvīgu, pārlūkprogrammas adreses josla būs /location/shanghai/ pārrakstīt ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last; Problēma ar iepriekš minēto piemēru ir tā, ka tas nesakrīt, piekļūstot /shanghai pārrakstīt ^/([0-9a-z]+)job$ /area/$1/ pēdējais; pārrakstīt ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last; Šādā veidā / Šanhaja ir arī pieejama, bet relatīvās saites lapā nav pieejamas, Ja ./list_1.html īstā adrese ir /area/shanghia/list_1.html kļūs par /list_1.html, padarot to nepieejamu. Tad es nevaru pievienot automātisko lēcienu (-d $request_filename) ir nosacījums, ka tam jābūt īstam direktorijam, un mana pārrakstīšana nav, tāpēc tam nav nekādas ietekmes ja (-d $request_faila nosaukums){ pārrakstīt ^/(.*)([^/])$ http://$host/$1$2/permanent;
} Tas ir viegli izdarāms pēc tam, kad zinu iemeslu, ļaujiet man lēkt manuāli pārrakstīt ^/([0-9a-z]+)job$ /$1job/permanent; pārrakstīt ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
15. Domēna vārda lēciens serveris
{ klausīties 80; server_name jump.linuxidc.com; indeksa index.html index.htm index.php; sakne /opt/lampp/htdocs/www; pārrakstīt ^/ http://www.xx.com/; access_log izslēgts;
}
16. Vairāku domēnu pagriešana server_name www.xx.comwww.xx.com; indeksa index.html index.htm index.php; sakne / opt / lampp / htdocs; if ($host ~ "linuxidc\.net") { pārrakstīt ^(.*) http://www.xx.com$1permanent;
}
6. NGINX globālie mainīgie arg_PARAMETER #这个变量包含GET请求中, ja ir mainīgs PARAMETRS. argumenti #这个变量等于请求行中 (GET pieprasījums) parametri, piemēram, foo=123&bar=blahblah; binary_remote_addr #二进制的客户地址. body_bytes_sent #响应时送出的body字节数数量. Šie dati ir precīzi pat tad, ja savienojums tiek pārtraukts. content_length #请求头中的Content garuma lauks. content_type #请求头中的Content tipa lauks. cookie_COOKIE #cookie mainīgā COOKIE vērtība document_root #当前请求在root指令中指定的值. document_uri #与uri相同. resursdatora #请求主机头字段, pretējā gadījumā servera nosaukums. Resursdatora nosaukums #Set datora resursdatora nosaukumam, ko atgriež GetHostName http_HEADER is_args #如果有args参数 šis mainīgais ir vienāds ar "?", pretējā gadījumā ir vienāds ar "", nulles vērtību. http_user_agent #客户端agent信息 http_cookie #客户端cookie信息 limit_rate #这个变量可以限制连接速率. query_string #与args相同. request_body_file #客户端请求主体信息的临时文件名. request_method #客户端请求的动作, parasti GET vai POST. remote_addr #客户端的IP地址. remote_port #客户端的端口. remote_user #已经经过Auth Lietotājvārds, ko apstiprina pamata modulis. request_completion #如果请求结束 iestatiet to uz Labi. Tukšs, ja pieprasījums nav pabeigts vai ja pieprasījums nav pēdējais pieprasījumu ķēdē. request_method #GET或POST request_filename #当前请求的文件路径, ko ģenerē saknes vai aizstājvārda direktīvas un URI pieprasījumi. request_uri #包含请求参数的原始URI, tas nesatur resursdatora nosaukumu, piemēram, "/foo/bar.php?arg=baz". nevar modificēt. shēmas #HTTP方法 (piemēram, http, https). server_protocol #请求使用的协议, parasti HTTP/1.0 vai HTTP/1.1. server_addr #服务器地址 šo vērtību var noteikt pēc sistēmas izsaukuma pabeigšanas. server_name #服务器名称. server_port #请求到达服务器的端口号.
Septiņi. Atbilstība starp Apache un Nginx noteikumiem Apache RewriteCond atbilst Nginx, ja Apache RewriteRule atbilst Nginx pārrakstīšanai Apache [R] atbilst Nginx novirzīšanai [P] Apache atbilst pēdējam Nginx Apache [R,L] atbilst Nginx novirzīšanai Apache [P,L] atbilst Nginx pēdējam Apache [PT,L] atbilst Nginx pēdējam
Piemēram, atļaut norādītam domēna nosaukumam piekļūt šai vietnei un vienmēr vērsties pie www.xx.com citiem domēna nosaukumiem Apache: RewriteCond %{HTTP_HOST} !^(.*?) \.aaa\.com$[NC] RewriteCond %{HTTP_HOST} !^localhost$ Pārrakstīt Cond %{HTTP_HOST}!^192\.168\.0\. (.*?) $ RewriteRule ^/(.*)$ http://www.xx.com[R,L]
Nginx: if( $host ~* ^(.*)\.aaa\.com$ )
{ iestatīt $allowHost "1";
} if( $host ~* ^localhost )
{ iestatīt $allowHost "1";
} if( $host ~* ^192\.168\.1\.(. *?) $ )
{ iestatīt $allowHost "1";
} if( $allowHost !~ '1' )
{ pārrakstīt ^/(.*)$ http://www.xx.comredirect ;
}
|
Iepriekšējo:Sina Weibo skenē kodu, lai samaksātu 1 centu, lai saņemtu gada beigu bonusu līdz 2015. gada juaņaiNākamo:CMD5 uzlauž Windows sistēmas administratora paroli
|