Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 11719|Svar: 1

[Web] Et eksempel illustrerer omskrivningsreglen i Nginx

[Kopier link]
Opslået på 05/12/2014 22.45.25 | | |
En. Regulært udtryksmatch, hvor:
* ~ er kasusfølsom matching
* ~* er et case-insensitive match
* !~ og !~* er henholdsvis kasusfølsomme og små bogstavs-insensitive mismatches
To. fil- og mappematcher, hvor:
* -f og !-f bruges til at afgøre, om en fil eksisterer
* -d og !-d bruges til at afgøre, om en mappe eksisterer
* -e og !-e bruges til at afgøre, om en fil eller mappe eksisterer
* -x og !-x bruges til at afgøre, om en fil er eksekverbar eller ej
3. Den sidste parameter i omskrivningsinstruktionen er flagmærket, som er markeret med:
1.last svarer til [L]-mærket i Apache, hvilket betyder omskrivning.
2. Pause Efter at denne regel er matchet, afsluttes matchningen, og de efterfølgende regler matches ikke længere.
3.redirect returnerer 302 midlertidig omdirigering, og browseradressen vil vise URL-adressen efter springet.
4.permanent returner 301 permanent omdirigering, browseradressen vil vise URL-adressen efter springet.


Brug sidst og break til at implementere URI-omskrivninger, og browserens adresselinje forbliver uændret. Og der er en lille forskel mellem de to, at brug af alias-kommandoen skal markeres med sidst; Når du bruger proxy_pass direktiver, skal du bruge break-tagget. Efter det sidste tag er udført i denne omskrivningsregel, vil det være på serveren{......} Tag genstarter anmodningen, mens break tag afslutter kampen, når regelmatchen er afsluttet.
For eksempel: hvis vi omdirigerer en URL som /photo/123456 til /path/to/photo/12/1234/123456.png
omskriv "/foto/([0-9]{2})([0-9]{2})([0-9]{2})"/sti/til/foto/$1/$1$2/$1$2$3.png ;


Fire. NginxRewrite-reglen


1. bryde kommandoen
Brugsmiljø: server, placering, hvis;
Direktivet fuldender det nuværende regelsæt og håndterer ikke længere omskrivningsdirektivet.


2. Hvis direktivt
Brugsmiljø: server, placering
Denne instruktion bruges til at kontrollere, om en betingelse er opfyldt, og hvis ja, udføre sætningen inde i krølleparentes. If-kommandoen understøtter ikke indlejring, og understøtter ikke flere betingelser &&& og || Behandling.


3. returner-kommando
syntaks: returncode ;
Brugsmiljø: server, placering, hvis;
Denne instruktion bruges til at afslutte eksekveringen af reglen og returnere en statuskode til klienten.
Eksempel: Hvis den besøgte URL ender på ".sh" eller ".bash", returneres en 403-statuskode
Beliggenhed ~ .*\. (sh|bash)?$
{
retur 403;
}


4. omskriv kommandoen
Syntaks: rewriteregex erstatningsflag
Brugsmiljø: server, lokation, hvis
Denne direktiv omdirigerer URI'en baseret på udtrykket eller ændrer strengen. Instruktioner udføres i den rækkefølge, der står i konfigurationsfilen. Bemærk, at omskrivning af udtryk kun gælder for relative stier. Hvis du vil parre værtsnavne, bør du bruge if-sætninger, for eksempel nedenfor:
hvis( $host ~* www\.(. *) )
{
sæt $host_without_www $1;
omskriv ^(.*)$ http://$host_without_www$1permanent;
}


5. Sæt kommando
Syntaks: setvariabelværdi; Standard: ingen; Brugsmiljø: server, placering, hvis;
Denne direktiv bruges til at definere en variabel og tildele den en værdi. Værdien af en variabel kan være tekst, variabel eller union af tekstvariabler.
Eksempel: set$varname "hello world";


6.Uninitialized_variable_warn instruktioner
Syntaks: uninitialized_variable_warnon|off
Brugsmiljø: http, server, lokation, hvis
Denne kommando bruges til at tænde og slå advarselsmeddelelsen for ikke-initialiserede variabler fra, og standardværdien er Tændt.




Fem. Eksempel på Nginx Rewrite regelskrivning
1. Når den tilgåede fil og mappe ikke eksisterer, omdirigeres til en bestemt php-fil
if( !-e $request_filnavn )
{
omskriv ^/(.*)$ index.php sidst;
}


2. Mappebytte /123456/xxxx ====> /xxxx?id=123456
omskriv ^/(\d+)/(.+)/ /$2?id=$1 sidst;


3. Hvis klienten bruger IE-browseren, omdirigerer den til /ie-mappen
if( $http_user_agent ~ MSIE)
{
omskrivning ^(.*)$ /ie/$1 break;
}


4. Deaktiver adgangen til flere mapper
Placering ~ ^/(cron|skabeloner)/
{
benægte alt;
pause;
}


5. Deaktiver adgang til filer, der starter med /data
Placering ~ ^/data
{
benægte alt;
}


6. Forbyd adgang til filer med filendelser .sh, .flv, .mp3
Beliggenhed ~ .*\. (sh|flv|mp3)$
{
retur 403;
}


7. Indsæt browserens cache-tid for visse typer filer
Beliggenhed ~ .*\. (gif|jpg|jpeg|png|bmp|swf)$
{
udløber 30d;
}
Beliggenhed ~ .*\. (js|css)$
{
udløber 1 time;
}


8. Sæt udløbstider for favicon.ico og robots.txt;
Her er favicon.ico 99 dage, og robots.txt er 7 dage, og 404-fejlloggen er ikke logget
Beliggenhed ~(favicon.ico) {
log_not_found væk;
udløber 99d;
pause;
}
placering ~(robots.txt) {
log_not_found væk;
udløber 7d;
pause;
}


9. Fastsætte udløbstiden for et bestemt dokument; Dette er 600 sekunder, og adgangsloggene bliver ikke registreret
placering ^~ /html/scripts/loadhead_1.js {
access_log væk;
root /opt/lampp/htdocs/web;
udløber 600;
pause;
}


10. Anti-hotlink-filer og fastsatte udløbstider
Return412 her er en brugerdefineret HTTP-statuskode, som som standard er 403, hvilket er praktisk til at finde den korrekte hotlink-anmodning
"omskrivning ^/; "Viser et billede af en anti-hotlink
"access_log væk;" Der registreres ingen adgangslogge, hvilket reducerer stress
"Udløber 3D" 3 dages browsercache for alle filer


Beliggenhed ~*^.+\. (jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
valid_referers ingen blokerede *.xx.com*.xx.net localhost 208.97.167.194;
hvis ($invalid_referer) {
omskrivning ^/;
retur 412;
pause;
}
access_log væk;
root /opt/lampp/htdocs/web;
udløber 3D;
pause;
}


11. Kun tillad fast IP-adgang til hjemmesiden med en adgangskode


root /opt/htdocs/www;
tillade 208.97.167.194;
allow 222.33.1.2;
tillade 231.152.49.4;
benægte alt;
auth_basic "C1G_ADMIN";
auth_basic_user_file htpasswd;


12Konverter filer i flerniveau-mapper til én fil for at forbedre SEO-effekterne
/job-123-456-789.html 指向/job/123/456/789.html


omskrive^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html sidst;


13. Omdiriger, når filer og mapper ikke eksisterer:


hvis (!-e $request_filnavn) {
proxy_pass http://127.0.0.1;
}


14. Peg en mappe i rodmappen til niveau 2-mappen
For eksempel peger /shanghaijob/ på /area/shanghai/
Hvis du ændrer sidst til permanent, vil browserens adresselinje være /location/shanghai/
omskrivning ^/([0-9A-Z]+)job/(.*)$ /område/$1/$2last;
Problemet med ovenstående eksempel er, at det ikke matcher, når man tilgår /shanghai
omskriv ^/([0-9A-Z]+)job$ /område/$1/ sidst;
omskrivning ^/([0-9A-Z]+)job/(.*)$ /område/$1/$2last;
Denne vej/Shanghai er også tilgængelig, men de relevante links på siden er ikke tilgængelige,
Hvis ./list_1.html rigtige adresse er /area/shanghia/list_1.html bliver til /list_1.html, hvilket gør den utilgængelig.
Så kan jeg ikke tilføje automatisk hop
(-d $request_filename) har en betingelse om, at det skal være en rigtig mappe, og min omskrivning er det ikke, så det har ingen effekt
hvis (-d $request_filnavn){
omskriv ^/(.*)([^/])$ http://$host/$1$2/permanent;
}
Det er nemt at gøre, når man kender grunden, lad mig hoppe manuelt
omskriv ^/([0-9A-Z]+)job$ /$1job/permanent;
omskrivning ^/([0-9A-Z]+)job/(.*)$ /område/$1/$2last;


15. Domænenavnsspringning
Server
{
lyt 80;
server_name jump.linuxidc.com;
indeks index.html index.htm index.php;
root /opt/lampp/htdocs/www;
omskrivning ^/ http://www.xx.com/;
access_log væk;
}


16. Multidomæne-drejning
server_name www.xx.comwww.xx.com;
indeks index.html index.htm index.php;
root /opt/lampp/htdocs;
If ($host ~ "linuxidc\.net") {
omskriv ^(.*) http://www.xx.com$1permanent;
}


6. nginx globale variable
arg_PARAMETER #这个变量包含GET请求中, hvis der er en variabel PARAMETER.
args #这个变量等于请求行中 (GET-anmodning) parametre, f.eks. foo=123&bar=blahblah;
binary_remote_addr #二进制的客户地址.
body_bytes_sent #响应时送出的body字节数数量. Disse data er nøjagtige, selv hvis forbindelsen bliver afbrudt.
content_length #请求头中的Content bane.
content_type #请求头中的Content-type mark.
cookie_COOKIE #cookie værdien af COOKIE-variablen
document_root #当前请求在root指令中指定的值.
document_uri #与uri相同.
værten #请求主机头字段, ellers serverens navn.
Værtsnavn #Set til maskinens værtsnavn, som returneret af gethostname
http_HEADER
is_args #如果有args参数 er denne variabel lig med "?", ellers lig med "", nulværdi.
http_user_agent #客户端agent信息
http_cookie #客户端cookie信息
limit_rate #这个变量可以限制连接速率.
query_string #与args相同.
request_body_file #客户端请求主体信息的临时文件名.
request_method #客户端请求的动作, som regel FÅ eller POST.
remote_addr #客户端的IP地址.
remote_port #客户端的端口.
remote_user #已经经过Auth Brugernavn valideret af Basic Module.
request_completion #如果请求结束, sæt den til OK. Tøm, når anmodningen ikke er færdig, eller hvis anmodningen ikke er den sidste i anmodningskæden.
request_method #GET或POST
request_filename #当前请求的文件路径, genereret af root- eller alias-direktiver og URI-anmodninger.
request_uri #包含请求参数的原始URI indeholder den ikke værtsnavnet, f.eks. "/foo/bar.php?arg=baz". kan ikke ændres.
Scheme #HTTP方法 (f.eks. HTTP, https).
server_protocol #请求使用的协议, som regel HTTP/1.0 eller HTTP/1.1.
server_addr #服务器地址 kan denne værdi bestemmes, efter at et systemkald er afsluttet.
server_name #服务器名称.
server_port #请求到达服务器的端口号.


Syv. Overensstemmelse mellem Apache- og Nginx-reglerne
Apaches omskrivningsCond svarer til Nginx', hvis
Apaches RewriteRule svarer til Nginx' omskrivning
Apaches [R] svarer til Nginx' omdirigering
[P] i Apache svarer til sidste i Nginx
Apaches [R,L] svarer til Nginx' omdirigering
Apaches [P,L] svarer til Nginx' sidste
Apaches [PT,L] svarer til Nginx' sidste


For eksempel skal du tillade et angivet domænenavn at få adgang til dette site, og altid vende dig mod www.xx.com andre domænenavne
  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:
Hvis( $host ~* ^(.*)\.AAA\.com$ )
{
sæt $allowHost '1';
}
if( $host ~* ^localhost )
{
sæt $allowHost '1';
}
hvis( $host ~* ^192\.168\.1\.(. *?) $ )
{
sæt $allowHost '1';
}
hvis( $allowHost !~ '1' )
{
omskriv ^/(.*)$ http://www.xx.comredirect ;
}





Tidligere:Sina Weibo scanner koden for at betale 1 cent for at modtage årsbonussen op til 2015 yuan
Næste:CMD5 knækker Windows-systemadministratoradgangskode
Opslået på 07/12/2014 17.25.05 |
At læse og skrive tilbage er en dyd
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com