Yksi. Säännöllisten lausekeiden vastaavuus, jossa: * ~ on kirjainkoon herkkä vastaavuus * ~* on kirjainkoja kohtaamaton osuma * !~ ja !~* ovat kirjainkoon sensitiivisiä ja kirjainkoon sensituntemattomia ristiriitaisuuksia Kaksi. tiedosto ja hakemisto täsmäävät, missä: * -f ja !-f käytetään selvittämään, onko tiedosto olemassa * -d ja !-d käytetään selvittämään, onko hakemisto olemassa * -e ja !-e käytetään määrittämään, onko tiedosto tai hakemisto olemassa * -x ja !-x määritetään, onko tiedosto suoritettava vai ei 3. Uudelleenkirjoituskäskyn viimeinen parametri on lippumerkki, joka on merkitty seuraavasti: 1.viimeinen vastaa [L]-merkkiä apache-kielessä, mikä tarkoittaa uudelleenkirjoitusta. 2. Keskeytys Kun tämän säännön yhdistäminen on suoritettu, ottelu päättyy eikä seuraavia sääntöjä enää yhdistetä. 3.redirect palauttaa 302-väliaikaisen uudelleenohjauksen, ja selainosoite näyttää URL-osoitteen hypyn jälkeen. 4. pysyvä palautus 301 pysyvä uudelleenohjaus, selainosoite näyttää URL-osoitteen hypyn jälkeen.
Käytä viimeistä ja breakiä URI-uudelleenkirjoitusten toteuttamiseen, ja selaimen osoiterivi pysyy muuttumattomana. Ja näiden välillä on pieni ero, alias-komennon käyttö on merkitty viimeiseksi; Kun käytät proxy_pass direktiivejä, sinun täytyy käyttää break-tagia. Kun viimeinen tagi on suoritettu tässä uudelleenkirjoitussäännössä, se on palvelimella{......} tag käynnistää pyynnön uudelleen, kun taas break-tag lopettaa ottelun sääntömatchin päätyttyä. Esimerkiksi: jos ohjaamme URL-osoitteen kuten /photo/123456 osoitteeseen /path/to/photo/12/1234/123456.png kirjoita uudelleen "/photo/([0-9]{2})([0-9]{2})([0-9]{2})"/path/to/photo/$1/$1$2/$1$2$3.png ;
Neljä. NginxRewrite -sääntö
1.Break command Käyttöympäristö: palvelin, sijainti, jos; Direktiivi täydentää nykyisen sääntökokoelman eikä enää käsittele uudelleenkirjoitusdirektiiviä.
2. Jos määrätietoinen Käyttöympäristö: palvelin, sijainti Tätä käskyä käytetään tarkistamaan, täyttyykö ehto, ja jos täyttyy, suoritetaan lause kiharan tukien sisällä. If-komento ei tue sisäkkäystä, eikä tue useita ehtoja && ja || Hoito.
3. Palautuskäsky syntaksi: returncode ; Käyttöympäristö: palvelin, sijainti, jos; Tätä käskyä käytetään säännön suorittamisen lopettamiseen ja tilakoodin palauttamiseen asiakkaalle. Esimerkki: Jos vierailtu URL päättyy ".sh" tai ".bash", palautetaan 403-tilakoodi sijainti ~ .*\. (sh|bash)?$
{ paluu 403;
}
4. Kirjoita uudelleen komento Syntaksi: rewriteregex korvaava lippu Käyttöympäristö: palvelin, sijainti, jos Tämä käsky ohjaa URI:tä lausekkeen perusteella tai muuttaa merkkijonoa. Käskyt suoritetaan konfiguraatiotiedoston järjestyksessä. Huomaa, että lausekkeiden uudelleenkirjoittaminen on pätevää vain suhteellisille poluille. Jos haluat parittaa isäntänimiä, käytä if-lauseita, esimerkiksi alla: if( $host ~* www\.(. *) )
{ aseta $host_without_www $1; kirjoita uudelleen ^(.*)$ http://$host_without_www$1permanent;
}
5. Aseta komento Syntaksi: setvariable value; Oletus: ei yhtään; Käyttöympäristö: palvelin, sijainti, jos; Tätä direktiiviä käytetään muuttujan määrittelyyn ja sille arvon määrittämiseen. Muuttujan arvo voi olla teksti, muuttuja tai tekstimuuttujien yhdiste. Esimerkki: set$varname "hello world";
6.Uninitialized_variable_warn ohjeet Syntaksi: uninitialized_variable_warnon|off Käyttöympäristö: http, palvelin, sijainti, jos Tätä komentoa käytetään varoitusviestin päälle- ja poiskytkemiseen alustamattomille muuttujille, ja oletusarvo on Päällä.
Viisi. Nginx Rewrite -sääntöjen kirjoitusesimerkki 1. Kun käytettyä tiedostoa ja hakemistoa ei ole olemassa, ohjaa tiettyyn php-tiedostoon if( !-e $request_filename )
{ uudelleenkirjoita ^/(.*)$ index.php viimeisenä;
}
2. Hakemistojen vaihto /123456/xxxx ====> /xxxx?id=123456 uudelleenkirjoita ^/(\d+)/(.+)/ /$2?id=$1 viimeiseksi;
3. Jos asiakas käyttää IE-selainta, se ohjaa /ie-hakemistoon if( $http_user_agent ~ MSIE)
{ uudelleenkirjoita ^(.*)$ /ie/$1 katkaisu;
}
4. Poista pääsy useisiin hakemistoihin sijainti ~ ^/(cron|templates)/
{ kieltää kaikki; tauko;
}
5. Estä pääsy tiedostoihin, jotka alkavat /data-kirjaimella sijainti ~ ^/data
{ kieltää kaikki;
}
6. Kieltää pääsy tiedostoihin, joiden tiedostojen päätteet ovat .sh, .flv, .mp3 sijainti ~ .*\. (sh|flv|mp3)$
{ paluu 403;
}
7. Aseta selaimen välimuistiaika tietynlaisille tiedostotyypeille sijainti ~ .*\. (gif|jpg|jpeg|png|bmp|swf)$
{ vanhenee 30d;
} sijainti ~ .*\. (js|css)$
{ vanhentuu 1 tunti;
}
8. Aseta favicon.ico- ja robots.txt-käyttöajat; Tässä favicon.ico on 99 päivää, robots.txt 7 päivää, ja 404-virheloki ei ole kirjattu sijainti ~(favicon.ico) { log_not_found pois; päättyy 99d; tauko;
} sijainti ~(robots.txt) { log_not_found pois; vanhenee 7d; tauko;
}
9. Aseta tietyn asiakirjan vanhenemisaika; Tämä on 600 sekuntia, eikä käyttölokit tallenna sijainti ^~ /html/scripts/loadhead_1.js { access_log pois; root /opt/lampp/htdocs/web; vanhenee 600; tauko;
}
10. Anti-hotlink-tiedostot ja asetettu vanhenemisajat Return412 tässä on räätälöity HTTP-tilakoodi, joka oletuksena on 403, mikä on kätevää oikean hotlink-pyynnön löytämiseksi "kirjoita uudelleen ^/ ; "Näyttää kuvan anti-hotlinkistä "access_log pois;" Pääsylokkeja ei tallenneta, mikä vähentää stressiä "Vanhenee 3D" 3 päivää selaimen välimuistia kaikille tiedostoille
sijainti ~*^.+\. (jpg|jpeg|gif|png|swf|rar|zip|css|js)$ { valid_referers ei estänyt *.xx.com*.xx.net localhost 208.97.167.194; if ($invalid_referer) { Kirjoita uudelleen ^/ ; paluu 412; tauko;
} access_log pois; root /opt/lampp/htdocs/web; vanhentuu 3d; tauko;
}
11. Salli vain kiinteä IP-osoite verkkosivustolle salasanalla
root /opt/htdocs/www; lupa 208.97.167.194; salli 222.33.1.2; salli numero 231.152.49.4; kieltää kaikki; auth_basic "C1G_ADMIN"; auth_basic_user_file htpasswd;
12Muunna monitasokansioiden tiedostot yhdeksi tiedostoksi SEO-vaikutusten parantamiseksi
/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 viimeisenä;
13. Ohjaa uudelleen, kun tiedostoja ja hakemistoja ei ole olemassa:
if (!-e $request_filename) { proxy_pass http://127.0.0.1;
}
14. Ohjaa juurikansion kansio tason 2 hakemistoon Esimerkiksi /shanghaijob/ osoittaa /alueeseen/shanghai/ Jos vaihdat viimeiseksi pysyväksi, selaimen osoitepalkki on /location/shanghai/ uudelleenkirjoita ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last; Ongelma yllä olevassa esimerkissä on, että se ei täsmää, kun käytetään /shanghai kirjoita uudelleen ^/([0-9a-z]+)job$ /area/$1/ viimeiseksi; uudelleenkirjoita ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last; Tämä tapa/shanghai on myös saavutettavissa, mutta sivun suhteelliset linkit eivät ole saatavilla, Jos ./list_1.html todellinen osoite on /area/shanghia/list_1.html muuttuu /list_1.html:ksi, jolloin se on saavuttamatonta. Silloin en voi lisätä automaattista hyppyä (-d $request_filename) ehto, että sen täytyy olla oikea hakemisto, ja uudelleenkirjoitukseni ei ole, joten sillä ei ole vaikutusta if (-d $request_filename){ rewrite ^/(.*)([^/])$ http://$host/$1$2/permanent;
} Se on helppoa, kun tiedän syyn, annan tehdä manuaalisesti uudelleenkirjoita ^/([0-9a-z]+)job$ /$1job/pysyvä; uudelleenkirjoita ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
15. Verkkotunnuksen hyppääminen Palvelin
{ kuuntele 80; server_name jump.linuxidc.com; indeksi index.html index.htm index.php; root /opt/lampp/htdocs/www; kirjoita uudelleen ^/ http://www.xx.com/; access_log pois;
}
16. Monialueinen kääntäminen server_name www.xx.comwww.xx.com; indeksi index.html index.htm index.php; root /opt/lampp/htdocs; if ($host ~ "linuxidc\.net") { uudelleenkirjoita ^(.*) http://www.xx.com$1permanent;
}
6. nginx-globaalit muuttujat arg_PARAMETER #这个变量包含GET请求中, jos on muuttuva PARAMETRI. args #这个变量等于请求行中 (GET request) parametrit, esim. foo=123&bar=blahbla; binary_remote_addr #二进制的客户地址. body_bytes_sent #响应时送出的body字节数数量. Nämä tiedot ovat tarkkoja, vaikka yhteys katkeaisikin. content_length #请求头中的Content pituinen kenttä. content_type #请求头中的Content-tyyppinen kenttä. cookie_COOKIE #cookie COOKIE-muuttujan arvo document_root #当前请求在root指令中指定的值. document_uri #与uri相同. isäntä#请求主机头字段, muuten palvelimen nimi. isäntänimi #Set koneen isäntänimeen, jonka palautti gethostname http_HEADER is_args #如果有args参数 tämä muuttuja on yhtä suuri kuin "?", muuten "", nollaarvo. http_user_agent #客户端agent信息 http_cookie #客户端cookie信息 limit_rate #这个变量可以限制连接速率. query_string #与args相同. request_body_file #客户端请求主体信息的临时文件名. request_method #客户端请求的动作, yleensä GET tai POST. remote_addr #客户端的IP地址. remote_port #客户端的端口. remote_user #已经经过Auth Käyttäjätunnus on vahvistettu Basic-moduulilla. request_completion #如果请求结束, aseta se OK:ksi. Tyhjä, kun pyyntö ei ole valmis tai jos pyyntö ei ole viimeinen pyyntöketjussa. request_method #GET或POST request_filename #当前请求的文件路径, jotka generoidaan juuri- tai alias-direktiiveistä ja URI-pyynnöistä. request_uri #包含请求参数的原始URI se ei sisällä isäntänimeä, esim. "/foo/bar.php?arg=baz". ei voi muuttaa. Scheme #HTTP方法 (esim. http, https). server_protocol #请求使用的协议, yleensä HTTP/1.0 tai HTTP/1.1. server_addr #服务器地址 tämä arvo voidaan määrittää järjestelmäkutsun jälkeen. server_name #服务器名称. server_port #请求到达服务器的端口号.
Seitsemän. Apache- ja Nginx-sääntöjen välinen kirjeenvaihto Apachen RewriteCond vastaa Nginxin jos Apachen RewriteRule vastaa Nginxin uudelleenkirjoitusta Apachen [R] vastaa Nginxin uudelleenohjausta [P] apassissa vastaa viimeistä Nginxissä Apachen [R,L] vastaa Nginxin uudelleenohjausta Apachen [P,L] vastaa Nginxin viimeistä Apachen [PT,L] vastaa Nginxin viimeistä
Esimerkiksi salli tietyn verkkotunnuksen pääsy tälle sivustolle ja aina kääntyä www.xx.com muiden verkkotunnusten puoleen 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$ )
{ setti $allowHost '1';
} if( $host ~* ^localhost )
{ setti $allowHost '1';
} if( $host ~* ^192\.168\.1\.(. *?) $ )
{ setti $allowHost '1';
} if( $allowHost !~ '1' )
{ uudelleenkirjoita ^/(.*)$ http://www.xx.comredirect ;
}
|