nginx 정적 파일 설정 의 루트 와 alias

상황 설명
먼저 제 가 만난 구체 적 인 상황 을 말씀 드 리 겠 습 니 다. 프로젝트 폴 더: code 정적 파일 의 위치: / code / front / dist / 프로젝트 배 치 는 nginx 를 http 서버 로 사용 합 니 다. 그 중에서 nginx 의 정적 파일 설정 (일치) 은 두 가지 방식 이 있 습 니 다. 디 렉 터 리 일치 와 접 두 사 는 이번 항목 에서 사용 하 는 디 렉 터 리 와 일치 합 니 다. 설정 은 다음 과 같 습 니 다.
location ^~ /static/ {
        root /data/zfy_home/code/front/dist/;
    } 

접근 하 세 요 ~ ~ 스타일 이 없습니다. 정적 파일 의 모든 요청 404!
문제 원인 및 해결 방법
문 제 를 찾 으 면 위 설정 의 루트 를 alias 로 바 꾸 면 정상적으로 접근 할 수 있 습 니 다.이 루트 와 alias 는 다른 경 로 를 사용 합 니 다. 1. 루트 를 사용 하여 이 경 로 를 일치 시 킬 때 location 뒤에 일치 하 는 이 경 로 는 파일 디 렉 터 리 에 실제 존재 해 야 합 니 다. 예 를 들 어 방금 설정 한 것 과 같 습 니 다.
location ^~ /static/ {
        root /data/zfy_home/code/front/dist/;
    } 

그럼 내 정적 파일 은 / data / zfy 에 있어 야 합 니 다.홈 / code / front / dist / static / 이 경로 에서 사실은 제 프로젝트 에서 dist 폴 더 아래 에 모든 정적 파일 이 있 습 니 다. static 라 는 하위 디 렉 터 리 가 없 기 때문에 정적 자원 을 요청 할 때 404 오류 가 발생 했 습 니 다.방문http://myweb.com/static/1.jpg 실제 접근 자원 경로 / data / zfyhome/code/front/dist/static/1.jpg
2. alias 를 사용 하여 디 렉 터 리 를 설정 할 때 location 뒤의 디 렉 터 리 는 파일 디 렉 터 리 에 실제로 존재 해 야 하 는 것 이 아 닙 니 다.
location ^~ /static/ {
        alias /data/zfy_home/code/front/dist/;
    } 

이 때 location 뒤에 있 는 / static / 가상 디 렉 터 리 입 니 다. / data / zfy 에 해당 합 니 다.홈 / code / front / dist / 이 디 렉 터 리 의 별명 은 / data / zfy 로 직접 갈 수 있 습 니 다.홈 / code / front / dist / 이 디 렉 터 리 에서 자원 예제 찾기: 접근http://myweb.com/static/1.jpg 실제 접근 자원 경로 / data / zfyhome/code/front/dist/1.jpg
총결산
이 부분 은 글 주소 1 alias 디 렉 터 리 와 루트 디 렉 터 리 의 차 이 를 참고 합 니 다. 1) alias 가 지정 한 디 렉 터 리 는 정확 합 니 다. 즉, location 가 방문 한 path 디 렉 터 리 에 있 는 파일 은 alias 디 렉 터 리 에서 직접 찾 습 니 다.2) 루트 가 지정 한 디 렉 터 리 는 location 에 접근 한 path 디 렉 터 리 의 이전 디 렉 터 리 입 니 다. 이 path 디 렉 터 리 는 루트 가 지정 한 디 렉 터 리 에 실제 존재 한다 면;3) alias 탭 을 사용 하 는 디 렉 터 리 블록 에 rewrite 의 break 를 사용 할 수 없습니다 (구체 적 인 원인 불명).또한, alias 가 지정 한 디 렉 터 리 뒤에 "/" 기호!! 4) alias 가상 디 렉 터 리 설정 에 location 에 일치 하 는 path 디 렉 터 리 가 뒤에 없 으 면 "/" 접근 에 영향 을 주지 않 습 니 다. 접근 할 때 자동 으로 추 가 됩 니 다 "/" 를 추가 해 야 합 니 다.그러나 location 에 일치 하 는 path 디 렉 터 리 뒤에 '/' 를 추가 하면 방문 한 url 주소 에 이 path 디 렉 터 리 는 '/' 를 추가 해 야 합 니 다. 방문 할 때 자동 으로 '/' 를 추가 하지 않 습 니 다."/" 를 추가 하지 않 으 면 방문 이 실패 합 니 다!5) 루트 디 렉 터 리 설정 에서 location 에 일치 하 는 path 디 렉 터 리 뒤에 '/' 가 없 으 면 접근 에 영향 을 주지 않 습 니 다.따라서 일반적인 상황 에서 nginx 설정 에서 좋 은 습관 은: 1) location / 에 루트 디 렉 터 리 를 설정 하 는 것 입 니 다.2) location / path 에 alias 가상 디 렉 터 리 를 설정 합 니 다.
참고: 1.https://www.cnblogs.com/gaogch/p/10748114.html 2.http://www.nginx.cn/doc/standard/httpcore.html

좋은 웹페이지 즐겨찾기