2013-12-09 2 views
0

제 제작 환경에서는 Django 응용 프로그램에 정적 파일을 제공하는 Nginx가 있습니다. 그러나 개발 중에는 Django에 작업을 허용했습니다.Django는 예외가있는 정적 파일을 제공합니다.

Nginx는 모든 정적 파일 을 제공해야하지만 특정 하위 디렉토리의 파일은이어야합니다. 그래서, 장고 쪽, 나는 그 디렉토리를 가로 채고 다르게 취급해야한다.

Django dev 서버를 /static/*에 대한 모든 호출을 차단하지만 /static/myspecialfiles/*´ and hence write a url route to handle the GET calls to said/static/myspecialfiles/* '에 대한 호출을 차단할 수 있습니까?

답변

0

Django와 nginx의 두 영역에서이 문제를 해결해야합니다. (DEBUG=True 때) 이미 자동으로 STATIC_ROOT에서 정적 컨텐츠를 제공

장고를 들어

, 로컬 설치 프로그램을 실행하기 때문에, 당신의 특수 파일에 대한 URL의 conf을 추가

# in urls.py 
url(r'^/static/specialfiles/', SpecialView.as_view(), name='special'), 

그런 다음의 nginx의 conf에 있는지 확인 위치가 순차적으로 해석되기 때문에

server { 
    listen 80; 
    server_name example.com; 

    location/{ 
     proxy_pass http://localhost:8000; 
    } 

    location /static/specialfiles/ { 
     proxy_pass http://localhost:8000; 
    } 

    location /static/ { 
     alias /home/ubuntu/dev/example/static/; 
    } 
} 

을 당신의 특별한 파일은 일반적인 정적 블록 전에 장고 블록을 칠 것이다 : 실제로 장고에 도달 할 수 있도록 해당 경로를 무시합니다.

하지만 정말로 특별한 파일을 다른 위치로 옮기는 것이 가장 좋습니다.

+0

감사합니다. 이것은 정확히 내가 한 일이지만, 나는 내 URL 디스패처에 도달하지 못했고 정적 파일이 * 제공되기 전에 인상적입니다. INSTALLED_APPS에서 'django.contrib.staticfiles'를 주석 처리하면 url이 가로 챌 수 있습니다. 그렇지 않으면 그렇지 않습니다. – pistacchio

+0

정적 인 conf가 conf에 추가 된 것처럼 보였지만, 그렇지 않은 것 같습니다. 나는 당신의 파일을 다른 곳에 옮길 것을 제안했다. –

관련 문제