2016-09-01 2 views
0

MIME 형식을 허용하는 브라우저에서 WebP 이미지를 조건부로 제공하려고합니다. 기존 Nginx 설정에 알려진 해결책을 구현하는 데 문제가 있습니다.Nginx - Nginx 프록시를 통해 WebP를 조건부로 제공합니다.

내가 WebP 형식 구현 아래의 방법을 사용하려고 해요 :

map $http_accept $webp_suffix { 
    "~*webp" ".webp"; 
    } 

    server { 
    listen  8081; 
    server_name localhost; 

    location/{ 
     try_files $uri$webp_suffix $uri =404; 
    } 
    } 

from here

을하지만 기존의 nginx의 설정과 함께 사용할 수있는 방법을 찾기 위해 노력하는 것은 나에게 오류만을 받고 있지 않은 . 내 기존 구성 (Node.js가있는 AWS Elastic BeanStalk의 Nginx 프록시)이 node.js 프로세스에 대해 역방향 프록시로 표시됩니다. 내 기존 Nginx의 구성에 넣고 필요

은 다음과 같습니다 :

upstream nodejs { 
    server 127.0.0.1:8081; 
    keepalive 256; 
} 

server { 
    listen 8080; 

    location/{ 
     proxy_pass http://nodejs; 
     proxy_set_header Connection ""; 
     proxy_http_version 1.1; 
     proxy_set_header  Host   $host; 
     proxy_set_header  X-Real-IP  $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

가 어떻게 조건부 이미지를 WebP 형식 제공하기 위해, Nginx에 위의 설정에 try_files 지시어를 impliment합니까?

+1

'try_files' 지시어는 정적 파일을 제공 할 때에 만 유용합니다. 귀하의 질문은 Node.js 애플 리케이션이 이미지를 제공하고 있음을 의미합니다. –

+0

죄송합니다. 나는 질문을 조정했다. 아직도 명확하지 않은 경우 알려 주시기 바랍니다. – jessback

+0

** 당신이 ** nginx가이 파일들을 정적으로 (문서 루트 내에 존재하는 경우) 제공하고 싶다면 그렇지 않으면 node.js에 요청을 넘겨 줄 것을 말하고 있습니까? (정적 파일이없는 경우에만)? –

답변

0

=404 응답 대신 try_files 지시문의 기본 동작으로 명명 된 위치를 사용하십시오. 자세한 내용은 this document을 참조하십시오. 예를 들어 :

map $http_accept $webp_suffix { 
    "~*webp" ".webp"; 
} 

upstream nodejs { 
    server 127.0.0.1:8081; 
    keepalive 256; 
} 

server { 
    listen 8080; 

    root /path/to/document/root; 

    location/{ 
     try_files $uri$webp_suffix $uri @nodejs; 
    } 

    location @nodejs { 
     proxy_pass http://nodejs; 
     proxy_set_header Connection ""; 
     proxy_http_version 1.1; 
     proxy_set_header Host   $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

정적 파일을 조건부로 추가 .webp으로, /path/to/document/root 아래의 디렉토리 구조에서 발견되는 경우, nginx 파일을 제공합니다. 그렇지 않으면 제어가 지정된 위치로 전달되고 URI는 node.js 프로세스로 전송됩니다.

+0

어떤 이유로이 방법은 항상 원본 콘텐츠 유형으로 반환되며 웹에서는 사용되지 않습니다. 나는 더 조사 할 것이다. 그 동안 ''요소를 통해 여분의 마크 업을 구현하기로 결정했습니다. – jessback

관련 문제