Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 11719|Atbildi: 1

[Tīmeklis] Piemērs ilustrē pārrakstīšanas noteikumu Nginx

[Kopēt saiti]
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ņai
Nākamo:CMD5 uzlauž Windows sistēmas administratora paroli
Publicēts 07.12.2014 17:25:05 |
Lasīšana un publicēšana atpakaļ ir tikums
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com