programing

X-Sendfile 헤더가 작동하는지 테스트합니다.

closeapi 2023. 3. 12. 10:50
반응형

X-Sendfile 헤더가 작동하는지 테스트합니다.

X-Sendfile이 스크립트(PHP)에 의해 웹 서버에 반환된 요청을 적절하게 처리하고 있는지 여부를 확인하는 방법을 찾고 있습니다.이미지는 정상적으로 처리되고 있습니다만, 헤더는 컬로 표시됩니다.

$ curl -I http://blog2.stageserver.net/wp-includes/ms-files.php?file=/2011/05/amos-lee-feature.jpg
HTTP/1.1 200 OK
Date: Wed, 04 Jan 2012 17:19:45 GMT
Server: Cherokee/1.2.100 (Arch Linux)
ETag: "4dd2e306=9da0"
Last-Modified: Tue, 17 May 2011 21:05:10 GMT
Content-Type: image/jpeg
Content-Length: 40352
X-Powered-By: PHP/5.3.8
Content-Disposition: inline; filename="amos-lee-feature.jpg"

배열

Fast CGI에서 PHP-FPM 5.3.8을 사용하는 Cherokee 1.2.100:
cherokee.conf: vserver!20!rule!500!handler!xsendfile = 1
> > > Handler (vServer > Behavior > Extensions php > Handler)로 설정합니다).[ X - Send file ][ check ]) X - file ][ ]

Wordpress 네트워크 / WPMU 3.3.1:
define('WPMU_SENDFILE',true); 설정에는 이 있습니다.wp-config.phpwp-settings.php포함되어 있습니다.이것은 WP의 wp-includes/ms-files에서 다음 코드를 실행하도록 트리거합니다.php:50은 특정 블로그의 파일을 제공합니다.

header( 'X-Sendfile: ' . $file );
exit;

은, ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★이 스니펫은 폐기용 헤더를 추가해 주세요.exit();가 위의 컬call에는 . Ms" 입니다.php 드 the. 같습니다추가된 코드는 다음과 같습니다.
header('Content-Disposition: inline; filename="'.basename($file).'"');


조사.

다음과 같은 것이 있습니다.

  • 설정 변경 후 php-fpm / cherokee daemons 재부팅.
  • php.net/readfile에서 코멘트의 트릭을 몇 가지 시도하고,의 심플한 헤더를 대체.ms-files.php예를 들어 보다 완전한 코드를 제공합니다.
    • php.net/manual/en/function.readfile.php
    • www.jasny.net/articles/how-i-php-x-sendfile/
    • * codeutopia.net/blog/2009/03/06/sending-files-better-apache-mod_xsendfile-and-php/*
  • 이미지가 정상적으로 동작하고 있기 때문에 적용되지 않을 것 같은데 [체로키 지원][5]를 확인하고 [6] 압축을 테스트했습니다.저도 lighttpd 게시물에서 의심스러울 정도로 비슷한 문제를 발견했습니다.
    • * cherokee-project.com/doc/other_goodies.html*
    • code.google.com/p/cherokee/issues/detail?id=1228
    • webdevrefinery.com/forums/topic/4761-x-sendfile/
  • 여기 SO에서 헤더가 벗겨진 것을 나타내는 블러브를 발견했습니다.
    • stackoverflow.com/questions/7296642/django-understanding-x-sendfile
  • 위의 헤더가 curl, wget, Firefox, Chrome 및 web-sniffer.net에서 일치하는지 테스트.
  • 평판이 좋지 않아 아직 2개 이상의 링크를 올릴 수 없다는 것을 알게 되었습니다.

문의사항

  • X-Sendfile올바르게 동작하고 있는 경우, 헤더에 포함되어 있는지, 또는 삭제되어 있는지를 확인합니다.
  • 액세스 로그를 사용하여 다음 중 어느 쪽을 선택할 수 있는지 여부를 판단할 수 있습니까?X-Sendfile작동합니까?

여기서 일반적인 트러블 슈팅 힌트나 정보를 찾고 있습니다만, 반드시 PHP/Cheroke에만 해당되는 것은 아닙니다.

갱신하다

테스트 환경 또는 샌드박스 환경에서 X-Sendfile 또는 X-Accel-Redirect를 확인하는 적절한 방법을 찾았습니다.X-Sendfile을 비활성화하고 헤더를 확인합니다.

Cherokey에서 Allow X-Sendfile을 비활성화하는 경우:

$ curl -I http://blog2.stageserver.net/wp-includes/ms-files.php?file=/2011/05/amos-lee-feature.jpg
HTTP/1.1 200 OK
Date: Fri, 06 Jan 2012 15:34:49 GMT
Server: Cherokee/1.2.101 (Ubuntu)
X-Powered-By: PHP/5.3.6-13ubuntu3.3
Content-Type: image/jpeg
X-Sendfile: /srv/http/wordpress/wp-content/blogs.dir/2/files/2011/05/amos-lee-feature.jpg
Content-Length: 40352

브라우저에는 이미지가 로드되지 않지만 헤더가 있음을 알 수 있습니다.Allow X-Sendfile(X 전송 파일 허용)을 다시 활성화하면 X-Sendfile이 작동 중임을 확인할 수 있습니다.

github의 소스에 따르면 X-Sendfile 헤더는 삭제됩니다.

파일을 올바르게 스킴하고 있는 경우는, 디버깅 모드로 컴파일 되어 있는 경우에만 로그의 성공이 됩니다.

xsend file을 사용하거나 사용하지 않고 대용량 파일을 보낼 때 메모리 사용량을 확인할 수 있습니다.

단순히 파일을 사용하는 이유 중 하나, 즉 수신자가 파일의 위치를 알지 못하는 사이에 파일을 제공하는 것을 방해한다는 이유만으로 이러한 파일이 제거되고 있습니다.

언급URL : https://stackoverflow.com/questions/8733580/test-if-x-sendfile-header-is-working

반응형