Nginx 정규 설정

3251 단어 nginx
Nginx 설정 에서 Location 의 문법 규칙 location [ = | ~ | ~* | ^~ | !~ | !~* ] /uri/{ … }
  • = 정확하게 일치 함 을 나타 낸다
  • ~ 대소 문자 구분 정규 일치
  • ~ * 대소 문자 구분 없 음 정규 일치
  • ^ ~ URI 는 일반적인 문자열 로 시작 합 니 다
  • !~ 대소 문자 구분 정규 일치 하지 않 음
  • !~* 대소 문자 구분 없 음 정규 일치 하지 않 음
  • / 공통 일치, 모든 요청 이 일치 합 니 다
  • 일치 순서
    여러 location 설정 의 경우 일치 하 는 순 서 는 다음 과 같 습 니 다.
  • 우선 매 칭 =
  • 다음으로 일치 합 니 다 ^ ~
  • 그 다음은 파일 의 순서 에 따라 정규 일치
  • 마지막 으로 전달 / 통용 매 칭
  • 일치 가 성공 하면 일치 하지 않 고 현재 일치 하 는 규칙 에 따라 요청 을 처리 합 니 다.
    상용 규칙
  • 정확 한 일치
  • location = / {
      proxy_pass http://127.0.0.1:9090/
    }

    모든 요청 을 서버 의 9090 포트 에 직접 전달 합 니 다.
  • 정적 파일 처리
  • #    
    location ^~ /static/ {
      root /webroot/static/;
    }
    #    
    location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
      root /webroot/res/;
    }
  • 백 엔 드 응용 서버 에 동적 요청 전송
  • # /account/        Account   
    location /account/ {
        proxy_pass http://127.0.0.1:8080/
    }
    # /order/        Order   
    location /order/ {
        proxy_pass http://127.0.0.1:9090/
    }

    rewrite 명령 어
  • last 는 apache 안의 [L] 태그 에 해당 하 며 rewrite 를 나타 낸다.
  • break 이 규칙 이 일치 하면 일치 하지 않 고 뒤의 규칙 과 일치 하지 않 습 니 다.
  • redirect 는 302 의 임시 방향 을 되 돌려 줍 니 다. 브 라 우 저 주 소 는 점프 후의 URL 주 소 를 표시 합 니 다.
  • permanent 는 301 로 영구적 으로 방향 을 바 꾸 고 브 라 우 저 주 소 는 점프 후의 URL 주 소 를 표시 합 니 다.
  • URI 재 작성 lastbreak 을 사용 하면 브 라 우 저 주소 표시 줄 이 변 하지 않 습 니 다.
  • 사용 alias 명령 은 반드시 last 로 표시 해 야 한다.proxy_pass 명령 을 사용 할 때 break 표 시 를 사용 해 야 한다.
  • last 표 시 는 이 조항 rewrite 규칙 이 실 행 된 후에 서버 {...} 태그 에 대해 다시 요청 합 니 다. break 표 시 는 이 규칙 이 일치 한 후에 일치 하지 않 습 니 다.

  • 예 를 들다
    예 는 단지 여러분 의 이 해 를 위 한 것 이지 실제 장면 이 아 닙 니 다.
    서버 는 인터페이스 /api/v1/access 를 제공 합 니 다. 단말 사용 자 는 브 라 우 저 페이지 를 통 해 방문 할 수도 있 고 공중 번 호 를 통 해 방문 할 수도 있 으 며 App 을 통 해 방문 할 수도 있 습 니 다.
    수요 가 왔 습 니 다. 서로 다른 채널 에 따라 방문 수 를 통계 하려 면 터미널 에서 인 터 페 이 스 를 호출 할 때 각자 숫자 를 분배 합 니 다.
  • 브 라 우 저 페이지: 10000
  • 공중 번호 내 페이지: 20000
  • 앱 페이지 조작: 30000
  • 서로 다른 터미널 이 인터페이스 에 접근 할 때 숫자 를 인터페이스 앞 에 맞 춥 니 다. 예 를 들 어 /10000/api/v1/accessNginx 는 모든 접근 요청 을 서버 로 옮 겨 야 합 니 다. 설정 은 다음 과 같 습 니 다.
    location ~/([0-9]+)/(.*)$ {
      rewrite /([0-9]+)/(.*)$ /$2 break;
      proxy_pass http://127.0.0.1:9090;
    }

    $2 는 경로 의 정규 표현 식 이 일치 하 는 두 번 째 매개 변수, 즉 (. *) 이 부분 을 표시 합 니 다.
    자, 친구 가 물 어 볼 수도 있 습 니 다. 그러면 서로 다른 채널 의 방 문 량 을 통계 할 수 있 습 니까?답 은 분명 안 될 것 입 니까? nginx 라 는 것 은 서로 다른 채널 의 요 구 를 같은 서비스 로 전달 하 는 것 일 뿐 통 계 를 하 는 일 은 하지 않 았 습 니 다.
    통계 작업 은 이 글 의 내용 에 속 하지 않 지만 안심 하 세 요.이 내용 을 언급 한 이상 실현 방안 을 모두 에 게 말 해 야 합 니까?
    원 리 는 간단 합 니 다. Nginx 의 access 방문 로그 에 모든 요청 기록 을 기록 하면 우 리 는 이 데 이 터 를 통 계 를 할 수 있 습 니 다. 저 는 로그 데 이 터 를 Elasticsearch 에 전송 한 다음 에 Kibana 에서 그림 표 시 를 해서 이 지 표를 보 여 주 는 방안 만 말 합 니 다.ELK 에 대해 알 고 싶 으 시 면 제 다른 글 을 보 세 요. ELK (Elasticsearch + Logstash + Kibana) 를 사용 하여 로그 수집 분석 플랫폼 을 구축 하 세 요.
    저의 개인 블 로그 에 오신 것 을 환영 합 니 다.
    공중 번호 주목: JAVA 9 시 반 수업, 답장 [자료] 2T 최신 기술 자 료 를 얻 고 매일 기술 공유 도 있 습 니 다. 같이 발전 하 겠 습 니 다. 감사합니다!

    좋은 웹페이지 즐겨찾기