2013-06-04 3 views
2

LifImagineBundle이 Symfony2 2.1.10 설치에 설치되어 있고 nginx 서버에 약간의 구성 문제가 있습니다. 그물에 나는 this nice snippet Symfony2 애플 리케이션을위한 위대한 간단한 nginx 구성으로 발견했다. 몇 줄의 코드를 추가했습니다. 가장 중요한 것은 이미지와 같은 정적 파일에 대해 access.log을 비활성화 할 수 있기를 원합니다.Nginx accesslog for LiipImagineBundle images

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

을하지만 오늘 나는 LiipImagineBundle에 의해 생성 된 이미지는 app.php 또는 app_dev.php를 통해 액세스 할 필요가 있다는 것을 발견 : 다음 규칙은 완벽하게 작동했다. 그렇지 않으면 그들은 생성 얻을 해달라고 Nginx에 다음과 같은 오류 메시지를 기록합니다

[error] 28988#0: *733 open() "/[...].jpeg" failed (2: No such file or directory) 

느릅 나무는 기본적으로는 Symfony2 응용 프로그램하지만 직접 통해 액세스되지 않기 때문에 파일이 생성되지 않는 404입니다.

액세스 로깅을 비활성화하고 정적 파일에 일부 캐싱 헤더를 추가 할 수있는 구성이 필요하지만 이전과 동일한 경로를 통해 서비스를 제공해야합니다. 가능한 해결책이 있습니까?

답변

4

문제가 해결되었습니다. 나는 봇 app.php/app_dev.phppng|jp[e]g|gif 등과 같은 정규 표현식을 만들었습니다. 이제 요청에 따라 이미지가 캐시됩니다. 이미지가 생성되지 않은 경우 서버는 201 Created으로 응답하고 이전에 캐싱 된 적이 있는지 여부에 따라 200 Ok 또는 304 Not Modified으로 응답합니다. 난이 도움이되기를 바랍니다

location ~ ^/(app_dev|app)\.php(.*?)\.(?:ico|gif|jpe?g|png)$ { 
    expires 18h; 
    add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 
    access_log off; 

    # still redirect because we are using LiipImagineBundle! 
    include fastcgi_params; 
    fastcgi_pass unix:/tmp/php5-fpm.sock; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    fastcgi_param HTTPS off; 
} 

# more static files: 
location ~* \.(?:css|js)$ { 
    expires 18h; 
    add_header Cache-Control "publi, must-revalidate, proxy-revalidate"; 
    access_log off; 
} 

location ~ ^/(app_dev|app)\.php$ { 
    include fastcgi_params; 
    fastcgi_pass unix:/tmp/php5-fpm.sock; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    fastcgi_param HTTPS off; 
} 

: 은 여기 내 대응의 nginx의 설정입니다.

+0

좋은 직장! 내 레포에 추가하면 되겠습니까? :) – Inoryy

+0

물론 아닙니다! 자유롭게 사용하십시오. :) 어쩌면 당신도 그것을 최적화 할 수 있습니다! 내 정규 표현식이 가능한 가장 빠르면 잘 모르겠다. – ferdynator

+0

@Inori이 [보안 문제] (https://nealpoole.com/blog/2011/04/setting-up-php-fastcgi-and-nginx-dont-trust-the-tutorials-check-your-configuration)을 발견했습니다. /). 확실하지는 않지만이 구성에 적용될 수 있다고 생각합니다. – ferdynator

관련 문제