2017-03-23 10 views
1

특정 정적 파일에 대해 브라우저 캐싱이 구현 될 때 404 오류를 생성하는 nginx 위에 작동하는 web2py 구성이 있습니다. 문제는 here으로 설명되어 있습니다. 문제가 관련되어 있거나 web2py 관련 해결 방법이나 솔루션이있을 수 있으므로 web2py 컨텍스트 내에서이 질문을하고 있습니다.브라우저 캐싱이 nginx/web2py로 구현 된 경우 정적 애셋에 404 오류가 발생했습니다.

worker_processes 3; 

events { 
    worker_connections 1024; 
} 

http { 
    access_log [/...]; 
    error_log [/...] crit; 

    include mime.types; 
    sendfile on; 

    server { 
     server_name [...] [...]; 
     return 301 [...] $request_uri; 
    } 

    server { 
     listen 127.0.0.1:[...]; 
     root [/...]; 

     location/{ 
      include uwsgi_params; 
      uwsgi_pass [.../uwsgi.sock]; 
     } 
    } 
} 

전에 또는 "위치"절은 위의 문제의 패턴과 일치하는 정적 파일을 제공 중지하도록 서버를 발생 이후에 다음 줄을 추가 :

nginx.conf은 다음과 같습니다

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { 
    expires 1d; 
} 

이 문제는 다른 문제로 인해 발생할 수 있지만 uwsgi 문제 일 수 있다고 이전 스레드에서 제안했습니다. "404"문제를 일으키지 않고 브라우저 캐싱을 구현하려면 어떻게해야합니까?

+0

'include uwsgi_params; 줄을 추가해보십시오. uwsgi_pass [.../uwsgi.sock]; '를 새 위치 블록에 추가하십시오. –

+0

@ 리차드 스미스 - 감사합니다. 두 번 확인한 후에, 나는 그것이 작동한다는 것을 합리적으로 확신한다. (지난 두 시간 동안 이것을 처리 한 후에, 나는 다시 엉망이 될 것을 기대하고있다.) 답변으로 답장을하려면 올바른 것으로 표시하십시오. – Boa

답변

1

동적 콘텐츠 만 제공하고있는 것으로 보입니다. 또한 nginx은 블록을 process a request으로 선택하며 완료해야합니다.

location / 블록의 uwsgi 구성을 추가 할 수있는 새로운 동적 위치간에 복제해야하는 경우 예를 들어 :

server { 
    ... 

    include uwsgi_params; 

    location/{ 
     uwsgi_pass [.../uwsgi.sock]; 
    } 
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { 
     expires 1d; 
     uwsgi_pass [.../uwsgi.sock]; 
    } 
} 

당신은 아마 외부 블록으로 include 문을 이동하고 문이 상속 될 수 있습니다 (가정 만 uwsgi_param 문을 포함).

+0

404 오류를 위해 브라우저 캐시를 사용하려고 시도했지만 이상한 시나리오가 거의 없습니다. "testsite.com/testblabla.png"라는 URL을 입력하면 e- 태그가있는 404 응답이 표시되고 같은 브라우저 탭을 새로 고침하면 브라우저 캐시가 사용되지 않는 것과 같습니다. 같은 URL을 열면 새로운 탭은 브라우저 캐시에서 가져옵니다. 그것은 너무 이상해, 또한 파이어 폭스는 404 상태를 위해 브라우저 캐시를 전혀 사용하지 않고있다. 얘들 아, 너도 똑같은 문제에 직면하면 알려줘. – anveshtummala