[포스트] Nginx의 위치 구성을 상세히 설명

Nginx의 위치 구성을 상세히 설명

HTTP : // outofmemory.cn/code-snippet/742/nginx-location-configuration-xiangxi-explain

 


문법 규칙 : location [=|~|~*|^~] /uri/ { … }

  • = 그것은 정확히 일치의 시작을 나타냅니다

  • ^~ 열린 우리당은 기존의로 시작하는 문자열의 시작을 나타냅니다, 경기의 URL 경로로 이해했다. URL이 요청 / 정적 / 20 % / AA하므로, 정기적 ^ ~ / 정적 일 수 없습니다 nginx를 코딩을 / / AA (공간주의) 일치.

  • ~ 그것은 정기적으로 대소 문자를 구별 경기의 시작을 나타냅니다

  • ~* 그것은 대소 문자를 구별하지 정규 경기의 시작을 나타냅니다

  • !~그리고 !~*있습니다 대소 문자 구분 및 대소 문자를 구별 경기는 정규 일치하지 않습니다

  • / 일반 경기는 모든 요청이 일치합니다.

여러 위치 구성의 경우에 대한 일치 순서 (에서 참조, 아직 실제 검증하지 엄격하게 참조 용 스틱 알아보십시오) :

위해 긍정적 인 일치하는 파일 뒤에 ^ ~ 일치하는 다음 첫 경기 =, 마지막에이 / 일반적인 일치. 일치 중단 할 때 일치하는 성공이있을 때, 현재의 규정에 의한 요청을 처리 일치합니다.

예를 들어, 다음과 같은 맵핑 규칙 :

LOCATION = / { 
   # 규칙 A를 
} 
LOCATION = / 로그인 { 
   # 규칙 B 
} 
LOCATION ^ ~ / 정적 / { 
   # 규칙 C 
} 
LOCATION ~ \. (GIF | JPG | PNG | JS | CSS) $ { 
   # 규칙 D 
} 
LOCATION * ~ \ .PNG의 $ { 
   # 규칙 E 
} 
LOCATION! ~ \ .xhtml $ { 
   # 규칙 F. 
} 
LOCATION! ~ * \ .xhtml $ { 
   # 규칙 G 
} 
위치 / { 
   # 규칙 H 
}

다음과 같이 그래서 효과는 다음과 같습니다

루트 디렉토리 / 액세스, 예 : http : // localhost를 / A는 규칙이 일치합니다

방문 http : // localhost를 / 로그인 규칙 B와 일치합니다,에 http : // localhost를 / 등록 일치하는 규칙 H

방문 http : //localhost/static/a.html 규칙은 C와 일치합니다

//localhost/a.gif, HTTP : 일치하는 규칙 D 및 E 규칙,하지만 우선 순위 D의 순서의 규칙, E 규칙을 작동하지 않고 //localhost/b.jpg에 http : // localhost를 / 정적 / c를 방문 http 우선 순위 규칙을 .png을하는 것은 C와 일치합니다

규칙이 대소 문자를 구분하지 않기 때문에 일치하는 규칙없이, D, E를 일치 규칙 E를 //localhost/a.PNG : HTTP를 방문하십시오.

방문 http : 규칙 및 규정 F G, HTTP 일치하지 //localhost/a.xhtml : 그것은 대소 문자를 구분하지 않기 때문에, 규칙 G 일치하지 //localhost/a.XHTML. 규칙 F는 G는 제외 규칙에 속하지만 일치하도록 일치 규칙을 충족, 그래서 그것이 사용되는 실제 응용에 대해 생각하지 않습니다.

방문 http : // localhost를 / 카테고리 / ID / 1111 다음 마지막 경기는 위의 규칙이 일치하지 않기 때문에,이 시간은 FastCGI를 (PHP), 바람둥이 (JSP)로, 백엔드 어플리케이션 서버로 요청을 전달 nginx에해야한다, H를 지배, 실재의 방향과의 nginx 프록시 서버.

그래서 실제 사용, 개인적으로 다음과 같이 적어도 세 일치하는 규칙이 정의되어 있다는 것을 느낄 수 :

직접 도메인 이름과 일치 # 웹 사이트 루트 프로세스를 가속화이를 사용하여, 더 자주 웹 사이트 홈 페이지를 방문, 공식 웹 사이트는 말한다. 
여기서 #은 백엔드 어플리케이션 서버에 직접 전달되고, 또한 고정 홈이 될 수 있습니다 
#에게 첫 번째 필수 규칙 
LOCATION = / { 
    proxy_pass의 HTTP : // 톰캣 : 8080 / 인덱스 
} 

# 정적을 다루는 두 번째 필수 규칙을 HTTP 서버에의 nginx 강점이다 요청 된 파일, 
#은 선택적으로 하나의 사용과, 일치 또는 접미사 일치 디렉토리, 두 개의 구성 모드가 있습니다 
~ ^ / 정적 / {LOCATION 
    , 루트 / 웹 루트가 / 정적 / 
} 
LOCATION ~ * \ . (GIF | JPG | JPEG | PNG | CSS | JS | ICO) $ { 
    루트 / 웹 루트는 / RES /; 
} 

# 세 번째 규칙은 일반적 동적 백엔드 어플리케이션 서버로 요청을 전달하는 것입니다 
# 비 정적 파일 요청 기본은 자신의 진정한 이해를 기반으로, 동적를 요청하는 것입니다 
# 결국, .PHP와 현재 인기있는 프레임 워크의 일부, .jsp를 접미사 드물게 케이스 

위치 / { 
    proxy_pass의 HTTP : // 톰캣 : 8080 / 
}

다른 구성 정보의 nginx를 설명

셋, 다시 쓰기 문법

last - 기본적으로이 플래그를 사용하십시오.
break - 경기를 계속하지 않는, Rewirte을 중단
redirect - 임시 리디렉션 HTTP 상태 302을 반환
permanent - 영구 리디렉션 HTTP 상태 301를 반환

1, 다음과 같은 표현을 확인하는 데 사용할 수 있습니다 :

-f그리고 !-f이 있는지 파일을 확인하는 데 사용
-d!-d디렉토리가 있는지 여부를 결정하는 데 사용
-e하고, !-e파일이나 디렉토리가 있는지 여부를 결정하는 데 사용
-x하고, !-x실행 파일 여부를 확인하는 데 사용

도 2를 참조하면, 다음은 전역 변수의 판단으로 사용될 수있다

例 : HTTP : // localhost를 : 88 / TEST1 / TEST2 / test.php

$ 호스트 : 로컬 호스트 
$의 SERVER_PORT : 88 
$의 REQUEST_URI : HTTP : // localhost를 : 88 / TEST1 / TEST2 / test.php 
$ DOCUMENT_URI : /test1/test2/test.php의 
$의 DOCUMENT_ROOT : D를 : \의 nginx / html로 
$ REQUEST_FILENAME : D : \의 nginx / HTML / TEST1 / TEST2 / test.php

네, 리디렉션 문법

서버 { 
    80을 듣고; 
    서버 _의 start.igrow.cn; 
    인덱스있는 index.html index.php에; 
    루트 HTML; 
    경우 ($ HTTP_HOST ~ "^ 스타 \ .igrow \ .CN $"{! 
        다시 ^ (*) HTTP는 : 리디렉션 //star.igrow.cn$1;. 
    } 
}

다섯, 안티 - 핫 링크

. 위치 ~ * \ (GIF | JPG | SWF) $ { 
    valid_referers 없음 start.igrow.cn sta.igrow.cn을 차단되지; 
    ($의 invalid_referer는) {경우 
        ^ / HTTP 재 작성 : //$host/logo.png을; 
    } 
}

여섯째, 파일 유형에 따라 만료 시간을 설정

. 위치 ~ * \ (JS | CSS | JPG | JPEG | GIF | PNG | SWF) $ { 
    (-f $ REQUEST_FILENAME) {경우 
        1 시간이 만료; 
        단절; 
    } 
}

세븐, 디렉토리에 대한 액세스를 금지

위치 ~ * \ (TXT | 문서) $ {. 
루트 / 데이터 / www /에서 wwwroot에 / linuxtone / 테스트; 
모두 거부; 
}

PS : 사용 가능한 전역 변수의 일부

$ 인수 
$ CONTENT_LENGTH 
$ 콘텐츠 _ 
$ DOCUMENT_ROOT 
$ DOCUMENT_URI 
$ 호스트 
$ HTTP_USER_AGENT 
$ HTTP_COOKIE 
$ limit_rate 
$ request_body_file 
$ REQUEST_METHOD 
$ REMOTE_ADDR 
$ REMOTE_PORT 
$ REMOTE_USER 
$ REQUEST_FILENAME 
$ REQUEST_URI 
$ 쿼리

추천

출처www.cnblogs.com/jinanxiaolaohu/p/11527438.html