10.12 - 10.16 rewrite 설정 if, break, last 의 용법, 규칙, nginx 전역 변수

10.12 - 10.15 rewrite 설정 if, break, last 의 용법, rewrite 규칙, Nginx 전역 변수
Nginx Rwrite 설정
도 메 인 이름 바 꾸 기 (방향 바 꾸 기), URL 재 작성 (위 정적), 움직임 분리 (도 메 인 이름 바 꾸 기, CDN 접속 가속 화)
  • PCRE 라 이브 러 리 의존
  • 모듈: ngxhttp_rewrite_module

  • 굵 은 Rwrite 관련 명령
  • if (조건) {command}  https://coding.net/u/aminglinux/p/nginx/git/blob/master/rewrite/if.md 
  • break 와 last  https://coding.net/u/aminglinux/p/nginx/git/blob/master/rewrite/break.md   

  • rewrite 로그 기록 열기:
  • 1. server 에 rewrite 가입log on;
  • 2. nginx. conf 에 error 설정log logs/nginx_error.log notice; notice 는 rewrite 오류 정 보 를 기록 합 니 다
  • 설정:
     vim nginx/conf/nginx.conf
    error_log logs/nginx_error.log notice;
    vim nginx/conf/vhost/1.com_default.conf 
    server{
            listen 80;
            server_name *.1.com 1.com;
            index index.html 80.html;
            root /data/t-nginx/1.com;
            rewrite_log on;
            rewrite /1.html /2.html ;
            rewrite /2.html /3.html ;
           }
    # curl -x127.0.0.1:80 1.com/1.html
    3333
  • 3. 우리 가 1. html 를 요청 할 때 최종 적 으로 방문 한 것 은 3. html 이 고 두 개의 rewrite 규칙 이 선후 로 실 행 됩 니 다.

  •    
    tail nginx/logs/nginx_error.log   
    2018/10/22 11:21:00 [notice] 20967#0: *1906 "/1.html" matches "/1.html", client: 127.0.0.1, server: *.1.com, request: "GET HTTP://1.com/1.html HTTP/1.1", host: "1.com"
    2018/10/22 11:21:00 [notice] 20967#0: *1906 rewritten data: "/2.html", args: "", client: 127.0.0.1, server: *.1.com, request: "GET HTTP://1.com/1.html HTTP/1.1", host: "1.com"
    2018/10/22 11:21:00 [notice] 20967#0: *1906 "/2.html" matches "/2.html", client: 127.0.0.1, server: *.1.com, request: "GET HTTP://1.com/1.html HTTP/1.1", host: "1.com"
    2018/10/22 11:21:00 [notice] 20967#0: *1906 rewritten data: "/3.html", args: "", client: 127.0.0.1, server: *.1.com, request: "GET HTTP://1.com/1.html HTTP/1.1", host: "1.com"

    로그 설명:
    "" 를 경계 로 하고 왼쪽 규칙, 오른쪽 이 일치 합 니 다.
    return 뒤에 상태 코드, URL, text (변수 지원)https://coding.net/u/aminglinux/p/nginx/git/blob/master/rewrite/return.md 
    피드백 문자열 은 이렇게 쓸 수 있 습 니 다.
    return  200 "it's 200";

    형식: return 상태 코드 "문자열";
  • rewrite 규칙https://coding.net/u/aminglinux/p/nginx/git/blob/master/rewrite/rewrite_ruler.md * regex 는 URI 와 일치 하 는 정규 표현 식 (/ (. *) 입 니 다. $host (도 메 인 이름)
  • 과 일치 하지 않 습 니 다.
  • rewrite_log 정의 rewrite 로그 rewritelog on;  error 에 쓰기log  notice 레벨
  • Rwrite 관련 전역 변수
    https://coding.net/u/aminglinux/p/nginx/git/blob/master/rewrite/variable.md 
    nginx 상용 전역 변수
    변량
    설명 하 다.
    $args
    요청 한 인자, 예 를 들 어 www. 123. com / 1. php? a = 1 & b = 2 의 $args 는 a = 1 & b = 2 입 니 다.
    $content_length
    HTTP 요청 메시지 의 "Content - Length"
    $conten_type
    HTTP 요청 메시지 의 "Content - Type"
    $document_root
    nginx 가상 호스트 설정 파일 의 루트 매개 변수 에 대응 하 는 값
    $document_uri
    현재 요청 에 명령 어 를 포함 하지 않 은 URI, 예 를 들 어 www. 123. com / 1. php? a = 1 & b = 2 의 $documenturi 는 1. phop 입 니 다. 뒤의 인 자 는 포함 되 지 않 습 니 다.
    $host
    호스트 헤드, 즉 도 메 인 이름
    $http_user_agent
    클 라 이언 트 의 상세 한 정보, 즉 브 라 우 저의 표지 입 니 다. curl - A 로 지정 할 수 있 습 니 다.
    $http_cookie
    클 라 이언 트 의 쿠키 정보
    $limit_rate
    nginx 서버 에서 limit 를 사용 하면rate 는 네트워크 속 도 를 설정 하면 표 시 됩 니 다. 설정 하지 않 으 면 0 을 표시 합 니 다.
    $remote_addr
    클 라 이언 트 의 네트워크 ip
    $remote_port
    클 라 이언 트 의 port
    $remote_user
    nginx 에 설정 인증 이 있 으 면 이 변 수 는 클 라 이언 트 인증 사용자 이름 을 대표 합 니 다.
    $request_body_file
    역방향 프 록 시 를 할 때 백 엔 드 서버 에 보 내 는 로 컬 자원 의 이름
    $request_method
    자원 요청 방식, GET / PUT / DELETE 등
    $request_filename
    현재 요청 한 자원 파일 의 경로 이름 은 $document 에 해당 합 니 다.root/$document_uri 의 조합
    $request_uri
    요청 한 링크, $document 포함uri 와 $args
    $scheme
    ftp, http, https 와 같은 요청 프로 토 콜
    $server_protocol
    클 라 이언 트 가 자원 에 사용 할 프로 토 콜 의 버 전 을 요청 합 니 다. 예 를 들 어 HTTP / 1.0, HTTP / 1.1, HTTP / 2.0 등 입 니 다.
    $server_addr
    서버 IP 주소
    $server_name
    서버 호스트 이름
    $server_port
    서버 포트 번호
    $uri
    와 $documenturi 동일
    $http_referer
    클 라 이언 트 가 요청 할 때의 refer 는 일반적으로 이 요청 이 어떤 링크 를 통 해 건 너 왔 는 지, curl - e 로 지정 할 수 있 습 니 다.
    return 200 은 전역 변 수 를 조합 할 수 있 습 니 다.
    형식:
    return 200 "전역 변수";
    예 를 들 면:
    return 200 "$args";

    설정 은 다음 과 같 습 니 다:
    server {
            listen 80;
            server_name 2.com;
            root /data/t-nginx/2.com;
            return 200 "$args";
            }
    [root@AliKvn vhost]# curl -x127.0.0.1:80 '2.com/2.php?1=a&2=b'
    1=a&2=b[root@AliKvn vhost]#

    그 중에서 1 = a & 2 = b 는 '$args' 의 변수 값 이 고 다른 변수 도 이 시계 방법 으로 값 을 얻 을 수 있 습 니 다.
    예 를 들 면:
    return 200 "$document_uri";
    server {
            listen 80;
            server_name 2.com;
            root /data/t-nginx/2.com;
            return 200 "$document_uri";
            }
    nginx -s reload
    [root@AliKvn vhost]# !curl
    curl -x127.0.0.1:80 '2.com/2.php?1=a&2=b'
    /2.php[root@AliKvn vhost]#

    그럼 2. php 는 $document오줌 을 누 었 다
    이상 변 수 는 함께 조합 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기