2014-09-18 3 views
0

나는의 nginx와이 디렉토리의 내용을 병합

  • /사이트/응용 프로그램/자산/CSS는
  • /사이트/응용 프로그램/자산/JS
  • /사이트/공공/자산/IMG
  • 이 웹 루트/사이트/공공

    내가해야 무엇이든

  • /사이트/공공/자산/http://example.com/assets/img에 대한 요청이/site/public/assets/img (기본값)로 가고 싶지만 http://example.com/assets/js에 대한 요청이/site/app/assets/js로 이동하고 싶습니다.

    이렇게하는 이유는 프로덕션 서버가 응용 프로그램 폴더의 소스를 처리하고 프로덕션 서버의 로컬에만있는 다른 폴더 (버전 제어 제외)에 넣은 다음 서버에서 처리 된 자산이 포함 된 폴더가 대신 병합됩니다.

    나는 방법이 있어야한다고 생각하지만, 나는 그것을 이해할 수 없다.

    감사합니다.

  • 답변

    1

    원하는 위치에 대체 root을 설정해야합니다. 이렇게

    server { 
    
        listen 80; 
        server_name localhost; 
    
        root /var/www/site/public; 
    
        location ~ /assets/(css|js)/ { 
         root /var/www/site/app; 
        } 
    
    } 
    
    +0

    감사합니다.이 경우 작동하지만 애플리케이션 폴더의 폴더가 asset이라고 불리우거나 example.com/something과 같은 더 많은 레벨이있는 ​​경우 해결책이 무엇인지 알 수 있습니다./무언가/자산? –

    +1

    앱 디렉토리에 애셋이있는 디렉토리가 있지만 이름이 다르고 동일한 URL로 주소를 지정하려는 경우 [''별칭'] (http://wiki.nginx.org/)을 사용해야합니다. 대신 HttpCoreModule # alias). URL 세그먼트를 "대체"할 수 있습니다. assets 디렉토리가 다른 디렉토리에 포함되어 있다면''root/var/www/site/app/something/something;과 같은 위치에서 루트를 조정하기 만하면됩니다. 그래서 정규 표현식과 일치하는 경로가 루트는 파일 이름에 해당합니다. – saaj

    관련 문제