nginx 에서 흔히 볼 수 있 는 정규 일치 기호 표시

8923 단어 nginx 서버
1、^:           ;
 
2、 $:          ;
 
3、.*:   .      ,*    0    ;
 
4、\.       ,\.   .          ,     ;
 
5、( 1| 2| 3| 4):     , :(jpg|gif|png|bmp)  jpg gif png bmp
 
6、i      

1. 정규 표현 식 일치, 그 중: * ~ 대소 문자 구분 일치 * ~ * 대소 문자 구분 없 음 일치 *!와!각각 대소 문자 가 일치 하지 않 고 대소 문자 가 일치 하지 않 는 것 을 구분 합 니 다. 2. 파일 과 디 렉 터 리 가 일치 하지 않 습 니 다. 그 중에서 * - f 와! -f. 파일 이 존재 하 는 지 판단 하기 * - d 와! -d. 디 렉 터 리 가 존재 하 는 지 판단 하기 * - e 와! -e. 파일 이나 디 렉 터 리 가 존재 하 는 지 판단 하기 * - x 와! -x. 파일 이 3. rewrite 명령 을 실행 할 수 있 는 지 판단 하 는 마지막 매개 변 수 는 flag 태그 이 고 flag 표 시 는 1. last 입 니 다.    apache 에 있 는 [L] 태그 에 해당 하 며 rewrite 를 표시 합 니 다.2. break 이 규칙 이 일치 하면 일치 하지 않 고 뒤의 규칙 과 일치 하지 않 습 니 다.3.redirect  302 임시 방향 을 바 꾸 면 브 라 우 저 주 소 는 점프 후의 URL 주 소 를 표시 합 니 다.4.permanent  301 로 영구적 으로 방향 을 바 꾸 면 브 라 우 저 주 소 는 점프 후의 URL 주 소 를 표시 합 니 다.
last 와 break 를 사용 하여 URI 재 작성 을 실현 합 니 다. 브 라 우 저 주소 표시 줄 은 변 하지 않 습 니 다.그리고 이들 은 미세한 차이 가 있 기 때문에 alias 명령 을 사용 하려 면 last 로 표시 해 야 합 니 다.proxy 사용pass 명령 시 break 표 시 를 사용 해 야 합 니 다.Last 표 시 는 이 rewrite 규칙 이 실 행 된 후 서버 {...} 탭 에 다시 요청 합 니 다. break 표 시 는 이 규칙 이 일치 한 후에 일치 하지 않 습 니 다.예 를 들 어 URL / photo / 123456 을 / path / to / photo / 12 / 1234 / 123456. pngrewrite "/ photo / ([0 - 9] {2}) ([0 - 9] {2}) ([0 - 9] {2})" / path / to / photo / $1 / $2 / $1 $2 / $2 $3. png 로 재 설정 하면;
4. NginxRewrite 규칙 관련 명령
1. break 명령 사용 환경: server, location, if;이 명령 의 역할 은 현재 규칙 집합 을 완성 하고 rewrite 명령 을 처리 하지 않 는 것 입 니 다.
2. if 명령 사용 환경: server, location 이 명령 은 조건 이 맞 는 지 확인 하 는 데 사 용 됩 니 다. 조건 이 맞 으 면 괄호 안의 문 구 를 실행 합 니 다.If 명령 은 끼 워 넣 기 를 지원 하지 않 습 니 다. 여러 조건 & & | 처 리 는 지원 되 지 않 습 니 다.
3. return 명령 문법: returncode;사용 환경: server, location, if;이 명령 은 규칙 의 실행 을 끝내 고 상태 코드 를 클 라 이언 트 에 게 되 돌려 주 는 데 사 용 됩 니 다.예제: 방문 한 URL 이 ". sh" 또는 ". bash" 로 끝나 면 403 상태 코드 location ~. * \. (sh | bash)? $를 되 돌려 줍 니 다.{return 403;}
4. rewrite 명령 문법: rewriteregex replacement flag 사용 환경: server, location, if 이 명령 은 표현 식 에 따라 URI 를 바 꾸 거나 문자열 을 수정 합 니 다.명령 은 설정 파일 의 순서에 따라 실 행 됩 니 다.표현 식 을 다시 쓰 는 것 은 상대 경로 에 만 유효 합 니 다.호스트 이름 을 맞 추 려 면 if 문 구 를 사용 해 야 합 니 다. 예 를 들 어 if ($host ~ * www \. (. *) {set $host without www $1; rewrite ^ (. *) $  http://$host_without_www$1permanent;}
5. Set 명령 문법: setvariable value;기본 값: none;사용 환경: server, location, if;이 명령 은 변 수 를 정의 하고 변 수 를 할당 하 는 데 사 용 됩 니 다.변수의 값 은 텍스트, 변수, 텍스트 변수의 결합 을 할 수 있 습 니 다.예제: set $varname "hello world";
6.Uninitialized_variable_warn 명령 어 문법: uninitializedvariable_warnon | off 사용 환경: http, server, location, if 이 명령 은 변 수 를 초기 화하 지 않 은 경고 정 보 를 열 고 닫 는 데 사 용 됩 니 다. 기본 값 은 열 립 니 다.
 
5. Nginx 의 Rewrite 규칙 작성 인 스 턴 스 1. 방문 한 파일 과 디 렉 터 리 가 존재 하지 않 을 때 phop 파일 if (! - e $request filename) {rewrite ^ / (. *) $index. php last 로 다시 설정 합 니 다.}
2. 디 렉 터 리 교환 / 123456 / xxxx  ====>  /xxxx?id=123456rewrite ^/(\d+)/(.+)/  /$2?id=$1 last;
3. 클 라 이언 트 가 IE 브 라 우 저 를 사용한다 면 / ie 디 렉 터 리 아래 if ($http user agent  ~ MSIE){rewrite ^(.*)$ /ie/$1 break;}
4. 여러 디 렉 터 리 위치 에 접근 금지 ~ ^ / (cron | templates) / {deny all; break;}
5. / data 로 시작 하 는 파일 location 에 접근 하지 마 십시오 ~ ^ / data {deny all;}
6.. sh,. flv,. mp3 를 파일 접미사 이름 으로 하 는 파일 location ~. * \. (sh | flv | mp3) ${return 403;} 에 접근 하지 마 십시오.
7. 특정 유형의 파일 을 설정 하 는 브 라 우 저 캐 시 시간 location ~. * \. (gif | jpeg | png | bmp | swf) ${expires 30d;} location ~. * \. (js | css) ${expires 1h;}
8. favicon. ico 와 robots. txt 에 만 료 시간 을 설정 합 니 다.여 기 는 favicon. ico 는 99 일, robots. txt 는 7 일 로 404 오류 로그 location 을 기록 하지 않 습 니 다 ~ (favicon. ico) {log not found off; expires 99d; break;} location ~ (robots. txt) {log not found off; expires 7d; break;}
9. 어떤 파일 의 만 료 시간 을 설정 합 니 다.여 기 는 600 초 입 니 다. 방문 로그 location 을 기록 하지 않 습 니 다 ^ ~ / html / script / loadhead1.js {access_log  off;root /opt/lampp/htdocs/web;expires 600;break;}
10. 파일 도 난 방지 및 만 료 시간 설정 여기 return 412 는 사용자 정의 http 상태 코드 입 니 다. 기본 값 은 403 입 니 다. 정확 한 도 난 요청 을 쉽게 찾 을 수 있 습 니 다. "rewrite ^ /http://img.linuxidc.net/leech.gif"도 난 방지 체인 그림" access log off "를 표시 합 니 다. 방문 로 그 를 기록 하지 않 고 스트레스 를 줄 입 니 다." expires 3d "모든 파일 의 3 일 브 라 우 저 캐 시
location ~*^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {valid_referers none blocked *.linuxidc.com*.linuxidc.net localhost 208.97.167.194;if ($invalid_referer) {rewrite ^/ http://img.linuxidc.net/leech.gif;return 412;break;}access_log  off;root /opt/lampp/htdocs/web;expires 3d;break;}
11. 고정 ip 만 웹 사이트 에 접근 할 수 있 고 비밀 번 호 를 추가 할 수 있 습 니 다.
root /opt/htdocs/www;allow  208.97.167.194; allow  222.33.1.2; allow  231.152.49.4;deny  all;auth_basic “C1G_ADMIN”;auth_basic_user_file htpasswd;
12. 다단 계 디 렉 터 리 에 있 는 파일 을 파일 로 변환 하여 seo 효과 강화 / 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 last;
13. 파일 과 디 렉 터 리 가 존재 하지 않 을 때 방향 을 바 꿉 니 다.
if (!-e $request_filename) {proxy_pass http://127.0.0.1;}
14. 루트 디 렉 터 리 아래 에 있 는 폴 더 를 2 단계 디 렉 터 리 로 가 리 킵 니 다. 예 를 들 어 / hanghaijob / 지향 / area / shanghai / last 를 permanent 로 바 꾸 면 브 라 우 저 주소 표시 줄 은 / location / shanghai / rewrite ^ / ([0 - 9a - z] +) job / (. *) $/ area / $1 / $last 입 니 다.위의 예 에서 문 제 는 / hanghai 에 접근 할 때 rewrite ^ / ([0 - 9a - z] +) job $/ area / $1 / last 와 일치 하지 않 습 니 다.rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;이렇게 / shanghai 도 방문 할 수 있 지만 페이지 의 상대 링크 는 사용 할 수 없습니다. 예 를 들 어. / list1. html 실제 주 소 는 / area / shanghia / list1. html 는 / list1. html, 접근 할 수 없 을 때 까지 안내 합 니 다.그럼 저 는 자동 으로 뛰 어도 안 됩 니 다 (- d $request filename). 실제 디 렉 터 리 를 위 한 조건 이 있 습 니 다. 제 rewrite 는 그렇지 않 기 때문에 효과 가 없습니다 if (- d $request filename) {rewrite ^ / (. *) (^ /) $http: / $host / $1 $2 / permanent;} 원인 을 알 고 쉽게 할 수 있 습 니 다. rewrite ^ / ([0 - 9a - z] +) job $/ $1job / permanent;rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
15. 도 메 인 이름 이동 server {listen      80;server_name  jump.linuxidc.com;index index.html index.htm index.php;root  /opt/lampp/htdocs/www;rewrite ^/ http://www.linuxidc.com/;access_log  off;}
16. 다 중 도 메 인 이름 서버 로 전환name  www.linuxidc.comwww.linuxidc.net;index index.html index.htm index.php;root  /opt/lampp/htdocs;if ($host ~ "linuxidc\.net") {rewrite ^(.*) http://www.linuxidc.com$1permanent;}
6. nginx 전역 변수 argPARAMETER    #이 변 수 는 GET 요청 에 변수 PARAMETER 가 있 을 때의 값 을 포함 합 니 다.args                    #이 변 수 는 요청 줄 의 인자 와 같 습 니 다. 예 를 들 어 foo = 123 & bar = blahblah;binary_remote_addr \ # 바 이 너 리 클 라 이언 트 주소 입 니 다.body_bytes_sent    #응답 할 때 보 내 는 body 바이트 수 입 니 다.연결 이 끊 겨 도 이 데 이 터 는 정확 하 다.content_length    #요청 헤더 의 Content - length 필드 입 니 다.content_type      #요청 헤더 의 Content - Type 필드 입 니 다.cookie_COOKIE    #cookie COOKIE 변수의 값 documentroot    #현재 루트 명령 에서 지정 한 값 을 요청 합 니 다.document_uri      #uri 와 같 습 니 다.host                #호스트 헤드 필드 를 요청 하 십시오. 그렇지 않 으 면 서버 이름 입 니 다.hostname          #Set to themachine’s hostname as returned by gethostnamehttp_HEADERis_args              #만약 args 인자 가 있다 면, 이 변 수 는 "?" 와 같 습 니 다.그렇지 않 으 면 ', 빈 값' 과 같 습 니 다. http user agent    #클 라 이언 트 에이전트 정보 http cookie          #클 라 이언 트 쿠키 정보 limit rate            #이 변 수 는 연결 속 도 를 제한 할 수 있 습 니 다. query string          #args 와 같 습 니 다. request body file  #클 라 이언 트 가 주체 정 보 를 요청 하 는 임시 파일 이름 입 니 다. request method    #클 라 이언 트 가 요청 한 동작 은 보통 GET 나 POST 입 니 다. reote addr          #클 라 이언 트 의 IP 주소 입 니 다. remote port          #클 라 이언 트 의 포트 입 니 다. remote user          #Auth Basic Module 에서 검 증 된 사용자 이름 입 니 다. request completion \ # 요청 이 끝나 면 OK 로 설정 합 니 다. 요청 이 끝나 지 않 았 거나 요청 체인 문자열 의 마지막 이 아니라면 비어 있 습 니 다 (Empty). request method    #GET 또는 POSTrequest filename  #현재 요청 한 파일 경 로 는 루트 나 alias 명령 과 URI 요청 으로 생 성 됩 니 다. request uri          #"/ foo / bar. php? arg = baz" 와 같은 호스트 이름 을 포함 하지 않 는 원본 URI 를 포함 합 니 다. 수정 할 수 없습니다. scheme                #HTTP 방법 (예: http, https). server protocol      #요청 한 프로 토 콜 은 보통 HTTP / 1.0 또는 HTTP / 1.1 입 니 다. server addr          #서버 주 소 는 시스템 호출 이 완료 되면 이 값 을 확인 할 수 있 습 니 다. server name        #서버 이름. server port          #서버 에 도착 할 포트 번 호 를 요청 합 니 다.
7. Apache 와 Nginx 규칙 의 대응 관계 Apache 의 RewriteCond 는 Nginx 의 ifApache 의 RewriteRule 에 대응 하 는 Nginx 의 rewriteApache 의 [R] 대응 하 는 Nginx 의 redirectApache 의 [P] 대응 하 는 Nginx 의 lastApache 의 [R, L] 대응 하 는 Nginx 의 redirectApache 의 [P, L] 대응 하 는 Nginx 의 lastApache 의 [PT, L] 대응 하 는 Nginx 의 last
예 를 들 어 지정 한 도 메 인 이름 이 본 사이트 에 접근 할 수 있 도록 허용 하고 다른 도 메 인 이름 은 www. linuxidc. net 로 일률적으로 전환 합 니 다.  Apache:RewriteCond %{HTTP_HOST} !^(.*?)\.aaa\.com$[NC]RewriteCond %{HTTP_HOST} !^localhost$ RewriteCond %{HTTP_HOST}!^192\.168\.0\.(.*?)$RewriteRule ^/(.*)$ http://www.linuxidc.net[R,L]
  Nginx:if( $host ~* ^(.*)\.aaa\.com$ ){set $allowHost ‘1’;}if( $host ~* ^localhost ){set $allowHost ‘1’;}if( $host ~* ^192\.168\.1\.(.*?)$ ){set $allowHost ‘1’;}if( $allowHost !~ ‘1’ ){rewrite ^/(.*)$ http://www.linuxidc.netredirect ;}

좋은 웹페이지 즐겨찾기