0

GridController에서 이미지를 가져 오는 CodeIgniter에 동적 콘텐트 컨트롤러가 있습니다. 서버가 nginx를 실행 중이고 7 일 동안이 동적 컨텐트 컨트롤러가 제공하는 이미지를 캐시하기 위해 내 nginx 구성에서 캐시 제어 헤더를 설정하려고합니다. 내 설정을 올바르게 내 nginx 구성 설정되어 있지만 파일이 실제로 서버에 존재하지 않기 때문에 nginx 404 헤더를 가져 오는 중입니다. 다음과 같이Mongo GridFS에서 Nginx를 통해 404 오류없이 동적 컨텐츠 제공

내 캐시 제어 지시문은 다음과 같습니다

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

log_not_found는 404 오류 로깅에서의 nginx를 유지하는 데 도움이되지만 브라우저로 전송하는 헤더는 여전히 404 오류입니다. 나는 PHP의 "헤더"기능을 통해 헤더를 수동으로 설정하려했지만 nginx가 php-fpm을 사용하기 때문에 이상한 일을하고있었습니다.

캐시 조절 헤더를이 상황에 맞게 올바르게 설정하는 방법에 대해 올바른 지침을 알려줄 수 있습니까? 모두에게 감사 =)

업데이트 :

은 내가 내 모든 정적 파일을위한 특별한 위치와 내 동적 컨트롤러와 내 nginx를 conf의 변경.

location ~ ^/(dres|js|css|art)/ { 
    access_log off; 
    expires 7d; 
    add_header Cache-Control public; 
    try_files $uri $uri/ /index.php?$args; 
} 

Nginx에 올바른 정적 파일에 헤더를 만료 설정하는 것입니다,하지만 난 내 인생의이 동적으로 출력 이미지 헤더를 만료 FastCGI를 출력에 nginx를 얻을 수 없습니다. php 파일을 제공 할 때 만료 헤더를 허용하기 위해 fastcgi 설정에서 뭔가를 놓치고 있어야합니다.

+0

내 동적 콘텐츠에 대한 URI는 다음과 같은 형식으로되어 있습니다 사이트의 파일입니다. 존재하지 않는 파일의 확장자를 일치시키는 대신 해당 지시문을 색인에 다시 작성하기 전에 컨트롤러의 경로로 변경하면 404 오류가 발생하지 않을까요? – user1106959

+0

여기 내 전체 conf : http://pastebin.com/sJ1vrkwF 예, 그게 아무것도 비 정적은 PHP를 통해 실행됩니다. 도와 주셔서 감사합니다 =) – user1106959

답변

0

그런데 fastcgi_cache을 설정하지 않으시겠습니까?

+0

파일 서버 쪽을 캐쉬하지 않으려 고합니다. 만료 헤더를 설정하고 이미지를 캐시하기 위해 클라이언트 쪽 브라우저에 알려 주려고합니다 ... – user1106959

0

대부분 해결되었습니다. php의 "header"기능을 사용하는 것이 실현되었다는 것을 깨달았습니다. 그렇지 않은 것으로 생각하게 만드는 다른 문제가있었습니다. 방금 동적 이미지 컨트롤러에 추가했습니다.

// seconds, minutes, hours, days 
$expires = (60*60*24*7); 
header("Pragma: public"); 
header("Cache-Control: maxage=".$expires); 
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');  

적어도 동적 이미지를 원하는대로 만료되었습니다. 나는 이러한 동적 이미지에 404를 얻지 않고 정적 파일의 만료를 지정하는 방법을 찾지 못했지만, 지금은 더 좋습니다. 주요 index.php를 통해 이동하는 모든 것을 강제로 재 작성이있다 http://example.com/controller/my_image_{imageid}.jpg :

관련 문제