2017-12-20 11 views
0

다음은 내가해야 할 일입니다. 내 서버가 두 세트의 이미지 세트를 제공해야합니다. 이미지의 첫 번째 세트는 내 서버의 폴더에있는 실제 PNG 파일입니다 (/realimages). 이미지의 두 번째 세트는 실제로 존재하지 않습니다. 요청이있을 때 요청한 이미지 파일 이름을 사용하고 싶습니다. Nginx에서 PHP scrpt로 PNG 파일 요청 전달

https://example.com/nosuchimage/img1.png 

은의 index.php 스크립트 /nosuchmage 폴더 안에 앉아 (또는 다른 곳에서 쉽게 경우)를 통해 이미지를 생성합니다.

그 스크립트는 다음

  • 가 제공
  • 가 배경에 관련 이미지를 중첩합니다 배경을 생성하는 PHP GD를 사용하는 /realimages 폴더에서 관련 이미지를 시설 않는 결과

해당 스크립트가 작성되었으며 완전히 작동합니다. 내가 모르는 것은 /nosuchimage 폴더에있는 모든 PNG 이미지 요청을 스크립트 매개 변수로 전달 된 원래 요청으로 해당 스크립트로 리디렉션하는 방법입니다.

이 작업은 재 작성 규칙 작성과 관련된 NGINX의 비교적 간단한 구성 문제입니다. 그러나 NGINX의 재 작성은 여전히 ​​나에게 상당히 까다로운 예술입니다. 다행히도, 여기 누군가가 재 작성 규칙이 무엇인지 말해 줄 수있을 것입니다.

답변

0

특정 폴더의 모든 이미지를 리디렉션하려면 구성 파일에서 아래 코드를 사용하십시오.

제 경우에는 기본 파일을 사용합니다. /etc/nginx/sites-available/default

location ~ \/realimages/(.+\.png)$ { 
    return 302 $scheme://$server_name/nosuchimage/$1; 
} 

// Access: http://www.example.com/images/valdeirpsr.png (Exists & Redirect to /nosuchimage/valdeirpsr.png) 
// Access: http://www.example.com/images/valdeirpsr2.png (Not Exists & Redirect to /nosuchimage/valdeirpsr2.png) 

만 특정 폴더에없는 이미지를 리디렉션 당신의 구성 파일에 아래의 코드를 사용합니다.

location ~ \/realimages/(.+\.png)$ { 
    error_page 404 $scheme://$server_name/nosuchimage/$1; 
} 

// Access: http://www.example.com/images/valdeirpsr.png (Exists & Show Image) 
// Access: http://www.example.com/images/valdeirpsr2.png (Not Exists & Redirect to /nosuchimage/valdeirpsr2.png)