nginx 에서 자주 사용 하 는 location rewrite proxypass

3545 단어
location
= 로 시작 하여 정확 한 매 칭 을 나타 낸다.루트 디 렉 터 리 의 끝 에 만 일치 하 는 요청 이 있 으 면 문자열 을 가 져 올 수 없습니다.^ ~ 로 시작 하면 uri 는 일반적인 문자열 로 시작 하고 일치 하면 계속 일치 하지 않 습 니 다.정규 일치 가 아니 라 ~ 로 시작 하여 대소 문 자 를 구분 하 는 정규 일치 임 을 나타 낸다.~ * 로 시작 하여 대소 문 자 를 구분 하지 않 는 정규 일치 / 로 시작 합 니 다. 일반적인 일치 입 니 다. 다른 일치 가 없 으 면 모든 요청 이 * * location xxx {} 에 일치 합 니 다. 그 중에서 xxx 와 괄호 사이 에 빈 칸 이 필요 할 때 가 많 습 니 다. 모두 추가 하 는 것 이 좋 습 니 다 *
일치 순서:
(location =) > (location 전체 경로) > (location ^ ~ 경로) > (location ~, ~ * 정규 순서) > (location 부분 시작 경로) > (/)
rewrite
rewrite 는 server {}, location {}, if {} 에 만 놓 을 수 있 고 도 메 인 이름 뒤의 파일 경로 에 만 작용 할 수 있 습 니 다.
실행 순서
  • server 블록 의 rewrite 명령 을 실행 합 니 다
  • 실행 위치 일치
  • 선 택 된 location 의 rewrite 명령 을 실행 합 니 다
  • 문법
    rewrite regex replacement [flag];
    flag
    여 기 는 server 급 과 location 급 으로 나 뉘 는데 그 중에서 if 는 server 와 location 에 각각 server 급 과 location 급 에 대응 합 니 다.같은 등급 에서 순 서 를 집행 하고 책 을 읽 고 순 서 를 쓴다.last: 같은 레벨 의 rewrite 를 실행 하지 않 고 location 에 다시 일치 하도록 쓰 십시오. break: 같은 레벨 의 rewrite 를 실행 하지 않 고 계속 아래로 실행 합 니 다. location 에 다시 일치 하지 않 습 니 다.redirect: 302 임시 리 셋 을 되 돌려 줍 니 다. 주소 표시 줄 은 점프 후의 주 소 를 표시 합 니 다 permanent: 301 영구 리 셋 을 되 돌려 줍 니 다. 주소 표시 줄 은 점프 후의 주 소 를 표시 합 니 다. flag 를 쓰 지 않 을 때 같은 등급 으로 다시 순환 합 니 다.
    if(condition)
    표현 식 이 하나의 변수 일 때 값 이 비어 있 거나 0 으로 시작 하 는 문자열 이 false 로 변수 와 내용 을 직접 비교 할 때 = 또는! = 을 사용 합 니 다.정규 표현 식 일치 ~ * 대소 문자 구분 없 는 일치! ~대소 문자 구분 이 맞지 않 습 니 다. - f 와! -f. 파일 이 존재 하 는 지 여 부 를 판단 하 는 데 사용 합 니 다. - d 와! -d 디 렉 터 리 존재 여 부 를 판단 하 는 데 사용 - e 와! -e. 파일 이나 디 렉 터 리 가 존재 하 는 지 판단 하 는 데 사용 합 니 다. - x 와! -x. 파일 이 실 행 될 수 있 는 지 여 부 를 판단 하 는 데 사용 합 니 다.
    기타
    디 버 깅
       default_type    application/json;
        locaiton  return 200 '$uri xxx' 

    변량
    set $a "1"
    if ($a = "1") {
      return 302
    }

    proxy_pass proxy_pass http://127.0.0.1:8008/; 여 기 는 location 에 있 는 proxy 만 토론 합 니 다.pass;
    1. location 사용 비정 규 직 일치
    location /api {
     # 1. proxy_pass http://127.0.0.1:8008/a;
     # 2. proxy_pass http://127.0.0.1:8008;
    }
  • 1 의 포트 뒤에 '/' 가 있 고 / api / test → / a / test 에 접근 합 니 다.(남 은 주 소 는 / test 와 일치 하고 주 소 를 프 록 시 주소 에 연결 합 니 다)
  • 2 중 포트 뒤에 '/' 가 없습니다. / api / test → / api / test 에 방문 하 십시오. uri 마지막 에 '/' 가 있 는 지, 포트 뒤에 '/' 가 있 는 지 주의 하 십시오.
  • 2. location 사용 정규 일치
    location ~ /api/ {
      proxy_pass http://127.0.0.1:8008;
    }
  • 포트 뒤에 추가 /, 가능 합 니 다.
  • 포트 뒤에 / 를 추가 하려 면 변 수 를 사용 해 야 합 니 다.프 록 시 주 소 는 자동 으로 나머지 uri 와 일치 하기 때문에 프 록 시 는 나머지 uri 와 일치 하면 주 소 를 혼 란 스 럽 게 할 수 있 습 니 다.

  • 3 、 만약 proxypass 뒤에 변수 가 있 습 니 다. 바로 가 는 주소 입 니 다. 12 가지 규칙 을 뛰 어 내 립 니 다.
    예 를 들다
    server {
      listen       80;
      rewrite /a(.*) /b$1;
      rewrite /b(.*) /c$1 last;
      rewrite /c(.*) /d$1 break;
      location / {
        if ($uri ~ /d/) {
          rewrite /d/(.*) /api/$1 last;
        }
        return 200 '$uri';
      }
      location /api {
        proxy_pass http://127.0.0.1:8000/test; #      /,    /api。
      }
      location ~ /t/(.*)/t {
        proxy_pass http://127.0.0.1:8000/test1/$1; 
        #proxy_pass http://127.0.0.1:8000/test1;     ,      ,   3     。
      }
    }
  • 방문 / 테스트 복귀 / test
  • 방문 / aa 복귀 / ca
  • 방문 / api 복귀 / cpi
  • 방문 / d / dd 대리 가기 http://127.0.0.1:8000/test/dd
  • 방문 / ee / t / test 2 / t / every 대리 방문 http://127.0.0.1:8000/test1/test2
  • 다음으로 전송:https://www.cnblogs.com/gsgs/p/11497587.html

    좋은 웹페이지 즐겨찾기