2014-10-03 1 views
0

장고를 사용하여 nginx에서 브라우저 캐싱을 설정하려고합니다. 정적 파일에 대한 내 nginx를 구성 파일의 현재 (작업) 구성은 다음별칭을 사용한 Nginx 브라우저 캐싱

server { 

    listen 443 ssl; 
    server_name SERVER; 

    ssl_certificate  /etc/ssl/CERT.pem; 
    ssl_certificate_key /etc/ssl/KEY.key; 
    ssl_protocols  SSLv3 TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers   HIGH:!aNULL:!MD5; 

    client_max_body_size 4G; 

    access_log /webapps/site/logs/nginx-access.log; 
    error_log /webapps/site/logs/nginx-error.log; 

    location /static/ { 
     alias /webapps/site/static/; 
    } 

    # other locations, etc. 
} 

내가 페이지 당 요청 수를 제한하는 브라우저 내에서 이미지 등 캐시 규칙을 설정하고 싶습니다 (페이지 당 100 개 정도의 이미지가 있지만 이미지는 전체 사이트에서 동일합니다). 나는 다음과 같은 규칙의 몇 가지 변화를 추가하는 시도 :이 작업을 수행 할 때 (구성 파일이 오류없이 체크 아웃하고 다시로드하지만)

location ~* \.(css|js|gif|jpe?g|png)$ { 
    expires 365d; 
    add_header Pragma public; 
    add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 
} 

그러나, 나는 404 오류 아무것도 얻을 수 없다. 나는 이것이 별칭과 관련이 있다고 믿지만 그것을 고치는 방법을 모르겠습니다.

의견을 보내 주시면 감사하겠습니다.

답변

3

이미지 위치 블록에 대한 root 지시문이 누락되었습니다. 따라서 nginx는 설치 위치에 따라 기본 위치에있는 파일을 찾게 될 것이고 그곳에 파일을 놓지 않았기 때문에 404 찾을 수 없음 오류가 발생합니다.

별칭을 정의했기 때문에 /static/ 위치 블록에서 작동합니다. 별칭은 단순히 둘 모두의 근원이되어야한다고 생각합니다. 그렇다면 다음을 시도하십시오.

server { 

    listen 443 ssl; 
    server_name SERVER; 
    root /path/to/web/root/folder/; 

    [...] 

    # Your locations ... Most likely no need for alias in any. 
} 
+0

그 덕분에 정말 감사합니다! – user2030378