nginx 전역 변수 및 rewrite 실전

4813 단어 링크 ux 운영
Rwrite 관련 전역 변수 coding. net / u / aminglinux / p / nginx / git / blob / master / rewrite / variable. mdRwrite 실전 coding. net / u / aminglinux / p / nginx / git / blob / master / rewrite / example. md
nginx 는 전역 변수 변 수 를 사용 하여 $args 요청 의 인 자 를 설명 합 니 다. 예 를 들 어 www. 123. com / 1. phop? a = 1 & b = 2 의 $args 는 a = 1 & b = 2 $content 입 니 다.length HTTP 요청 메시지 의 "Content - Length" $contentype HTTP 요청 메시지 의 "Content - Type" $document루트 nginx 가상 호스트 설정 파일 의 루트 매개 변수 에 대응 하 는 값 $documenturi 현재 요청 에 명령 이 포함 되 지 않 은 URI, 예 를 들 어 www. 123. com / 1. php? a = 1 & b = 2 의 $documenturi 는 1. phop 입 니 다. 뒤의 매개 변 수 를 포함 하지 않 습 니 다. \ # 자주 사용 하 는 $host 호스트 헤드, 즉 도 메 인 이름 \ # 자주 사용 하 는 $httpuser_에이전트 클 라 이언 트 의 상세 한 정보, 즉 브 라 우 저의 표지 입 니 다. curl - A 로 \ # 상용 $http 을 지정 할 수 있 습 니 다.쿠키 클 라 이언 트 의 쿠키 정보 $limitrate nginx 서버 에서 limit 를 사용 하면rate 는 네트워크 속 도 를 설정 하면 표 시 됩 니 다. 설정 하지 않 으 면 0 $remote 를 표시 합 니 다.addr 클 라 이언 트 의 네트워크 ip $remoteport 클 라 이언 트 의 port $remoteuser nginx 에 설정 인증 이 있 으 면 이 변 수 는 클 라 이언 트 가 인증 한 사용자 이름 $request 를 대표 합 니 다.body_file 역방향 프 록 시 를 할 때 백 엔 드 서버 에 보 내 는 로 컬 자원 의 이름 $requestmethod 자원 요청 방식, GET / PUT / DELETE 등 $requestfilename 현재 요청 한 자원 파일 의 경로 이름 은 $document 에 해당 합 니 다.root/$document_uri 의 조합 $requesturi 가 요청 한 링크, $document 포함uri 와 $args \ # 자주 사용 하 는 $scheme 요청 프로 토 콜, 예 를 들 어 ftp, http, https $serverprotocol 클 라 이언 트 가 자원 에 사용 할 프로 토 콜 버 전 을 요청 합 니 다. 예 를 들 어 HTTP / 1.0, HTTP / 1.1, HTTP / 2.0 등 $serveraddr 서버 IP 주소 $servername 서버 의 호스트 이름 $serverport 서버 의 포트 번호 $uri 와 $documenturi 동일 \ # 상용 $httprefer 클 라 이언 트 가 요청 할 때의 refer 는 일반적으로 이 요청 이 어떤 링크 를 통 해 건 너 왔 는 지, curl - e 로 \ # 상용 을 지정 할 수 있 습 니 다.
실전 재 작성
이 부분 은 nginx 생산 환경 에서 사용 하 는 장면 예시 입 니 다.
도 메 인 이름 이동 (도 메 인 이름 변경)
예제 1 (조건 없 는): server {listen 80; server name www. aminglinux. com; rewrite / (. *)http://www.aming.com/$1 permanent;.......
}
예시 2 (조건 이 있 는): server {listen 80; server name www. aminglinux. com aminglinux. com; if ($host! = 'www. aminglinux. com') {rewrite / (. *)http://www.aminglinux.com/$1 permanent;}.......
} 예제 3 (http 에서 https 로 이동): server {listen 80; server name www. aminglinux. com; rewrite / (. *)https://www.aminglinux.com/$1 permanent;.......
} 예제 4 (도 메 인 이름 2 급 디 렉 터 리 방문) server {listen 80; server name bbs. aminglinux. com; rewrite / (. *)http://www.aminglinux.com/bbs/$1 last;.......
} 예제 5 (정적 요청 분리) server {listen 80; server name www. aminglinux. com; location ~ ^. +. (jpg | jpeg | gif | css | png | js) ${rewrite / (.)http://img.aminglinux.com/$1 permanent;}
.......

} 또는: server {listen 80; server name www. aminglinux. com; if ($uri ~ 'jpg | jpeg | gif | css | png | js $') {rewrite / (.)http://img.aminglinux.com/$1 permanent;}
.......

}
도 난 방지 체인
예시 6server {listen 80; server name www. aminglinux. com; location ~ ^. +. (jpg | jpeg | gif | css | png | js | rar | zip | flv) ${\ # 화이트 리스트 빈 차 단 된 도 메 인 이름 valid referers 아무 도 차 단 된 server name. aminglinux. com aminglinux. com. aming. com aming. com; if ($invalid referer) \ # 블랙리스트 {rewrite / (.)http://img.aminglinux.com/images/forbidden.png;}}
.......

} 설명: 여 기 는 연결 입 니 다. 정규 와 같은 뜻 이 아 닙 니 다. none 은 refer 가 존재 하지 않 는 상황 (curl - e 테스트) 을 말 합 니 다. blocked 는 refer 머리 값 이 방화벽 이나 프 록 시 서버 에 의 해 삭제 되 거나 위장 되 는 상황 을 말 합 니 다. 이 경우 refer 머리 값 은 http: / 또는 https: / / 로 시작 하지 않 습 니 다.(curl - e 뒤에 따 르 는 referer 는 http: / 또는 https: / / 로 시작 하지 않 습 니 다). 또는: location ~ ^. +. (jpg | jpeg | gif | css | png | js | rar | zip | flv) ${valid referers none blocked server names. aminglinux. com *. aminglinux. com aminglinux. com aming. com; if ($invalid referer) {return 403;}}
의사 정적
예 7 (디스크 의 위 정적): locat/ {rewrite ^ ([^.]) / topic - (. +). html $$$$1 / portal. php? mod = topic & topic = $2 las; rewrite^ ([^.]) / form- (\ \ \ w +) - ([0 - 9] +). html $$$$$1 / 포럼. php? mod= forumdisplay & fid = $2 & page = $3 las; rewrite^ ([^.]]) / / thread - ([0 - 0 - 9] +) - ([0 - 0 - - 0 - 9] +) - ([0 - 9] +]] - ([0 - 9]]] +). ([0 - 0 - 0 - 9]] +). (([0 - - 0 - - hp? mod = viewthread & tid = $2 & extra = page% 3D $4 & page = $3 last; rewrite ^ ([^.]) / group - ([0-9]+)-([0-9]+).html$ $1/forum.php?mod=group&fid=$2&page=$3 last;rewrite ^([^.])/space-(username|uid)-(.+).html$ $1/home.php?mod=space&$2=$3 last;rewrite ^([^.])/(fid|tid)-([0-9]+).html$ $1/index.php?action=$2&value=$3 last;}
rewrite 여러 조건 의 그리고
예제 8: location / {set $rule 0; \ # 변 수 를 if ($document uri! ~ '^ / abc') {set $rule "${rule} 1"; \ # 01} if ($http user agent ~ 'ie6 | firefox') {set $rule "${rule} 2"; \ # 02} if ($rule = "012") {rewrite / (.) / abc / $1 redirect;}}}}

좋은 웹페이지 즐겨찾기