Nginx 위치 설정 자세히 알 아 보기

3339 단어
오늘 한 학우 가 Nginx 의 사이트 다 중 경로 가 일치 하 는 문 제 를 물 었 습 니까?
1. www. domain. com / a 는 / var / www / domain. com / a / index. html 2. www. domain. com / b 로 돌아 가 야 합 니 다. / var / www / domain. com / b / index. html 는 Nginx 를 어떻게 설정 하여 효력 을 발생 시 킵 니까?
이 문 제 를 해결 하 는 첫 번 째 반응 은 Nginx 의 location 명령 을 직접 사용 하여 해결 하 는 것 입 니 다. 그러나 답 을 주기 전에 우 리 는 먼저 Nginx location 명령 의 기 초 를 알 아 보 겠 습 니 다.
Nginx 블록 설정 개념
Nginx 설정 파일 에 서 는 보통 두 개의 블록 (Block) 으로 설정 합 니 다.
1. 서버 블록
2. Location 블록
이 블록 은 Block 을 말 합 니 다. 뒤의 {} 사이 의 설정 내용 으로 이해 할 수 있 습 니 다.
Sever 블록 은 주로 실제 호스트 의 설정 입 니 다. 예 를 들 어 호스트 의 도 메 인 이름, IP, 포트 등 내용 을 설정 합 니 다.물론 Nginx 설정 파일 에서 여러 개의 Sever 블록 설정 을 지정 할 수 있 습 니 다.
한편, Location 블록 은 Sever 블록 에서 서로 다른 경로 와 요청 에 대한 설정 으로 세분 화 됩 니 다.한 사이트 에 URI 가 많 기 때문에 Location 블록 에 이 부분 을 설정 하면 여러 Location 설정 을 쓸 수 있 습 니 다.
다음은 Location 설정 의 기본 문법 을 살 펴 보 겠 습 니 다. 먼저:

location optional_modifier location_match {
 #    {}               Block
}

위의 optionalmodifier 설정 항목 은 정규 표현 식 을 사용 할 수 있 습 니 다.자주 사용 하 는 몇 가 지 는 다음 과 같다.
  • 비 워 두 세 요.네, 비 워 두 는 것 도 설정 방식 입 니 다.빈 상태 에서 요청 경 로 를 location 으로 설정 합 니 다.match 시작.
  • =, 번호 와 같은 것 은 쉽게 이해 할 수 있 습 니 다. 바로 요청 경로 가 바로 뒤의 location 와 같 습 니 다.match 의 값;첫 번 째 여백 과 는 차이 가 있 습 니 다.
  • ~ 띄 우기 (영어 로 입력 한 띄 우기) 는 대소 문자 가 민감 한 정규 일치 함 을 나타 낸다.
  • ~ * 대소 문자 가 민감 하지 않 음 을 나타 내 는 정규 일치.
  • ^ ~ 정규 일치 가 있 기 를 원 하지 않 는 다 는 뜻 입 니 다.

  • Nginx 가 Location 블록 을 처리 하 는 순서
    위 에 location 명령 의 기본 개념 과 자주 사용 되 는 설정 을 알 게 되 었 습 니 다.우리 다시 Location 발효 순 서 를 봅 시다!이것 도 중요 하 다.
    모든 요청 이 Nginx 에 들 어 오 면 Nginx 는 Location 의 가장 좋 은 일치 항목 을 선택 하여 응답 합 니 다. 처리 하 는 구체 적 인 절 차 는 location 의 설정 과 비교 하 는 것 입 니 다. 이 절 차 는 다음 과 같은 몇 단계 로 나 눌 수 있 습 니 다.
    선진 줄 접두사 의 일치 (즉, location 의 optional modifier 가 비어 있 는 설정).
  • Nginx 는 URI 에 따라 완전히 일치 하 는 location 설정 을 찾 습 니 다 (즉, location 의 optional modifier 는 = 의 설정 입 니 다).
  • 일치 하지 않 으 면 먼저 일치 합 니 다 ^ ~ 설정 을 찾 으 면 찾 는 과정 을 중단 하고 응답 내용 을 되 돌려 줍 니 다.
  • 일치 하 는 항목 을 찾 지 못 하면 대소 문자 가 민감 한 정규 매 칭 을 한 다음 대소 문자 가 민감 하지 않 은 정규 매 칭 을 한다.

  • Nginx Location 설정 의 예:
    많이 말 하면 무익 하 다. 그렇게 많은 이론 을 보 았 는데 구체 적 인 사례 가 뒷받침 되 지 않 아 도 소용없다. 그래서 우 리 는 구체 적 인 배치 예 를 살 펴 보 자.
    
    location = / {
     # =      ,    /     
    }
    
    location /data {
      #     ,     /data      ,          。
    }
    
    location ^~ /img/ {
     #    ^~   ,      /img/     ,      。
    }
    
    location ~* .(png|gif|ico|jpg|jpeg)$ {
     #     png, gif, ico, jpg or jpeg      ;               。 
    }

    매우 실 용적 인 두 가지 예:
    1. 간단 한 이미지 도 난 방지 체인
    
    location ~ .(png|gif|jpe?g)$ {
     valid_referers none blocked yourwebsite.com *.yourwebsite.com;
     #              
     if ($invalid_referer) {
       return  403;
     }
    }

    2. 기록 가능 한 경로 에 대해 phop 또는 js 의 발걸음 을 금지 합 니 다.
    
    location ~* /(media|images|cache|tmp|logs)/.*.(php|jsp|pl|py|asp|cgi|sh)$ {
     return 403;
    }

    문제 의 답안
    마지막 으로 우 리 는 문제 의 답 을 다시 보면 이와 비슷 할 수 있다.
    
    location /a {
      root /var/www/domain.com/a;
    }
    
    location /b {
      root /var/www/domain.com/b;
    }

    좋은 웹페이지 즐겨찾기