nginx X - Accel - Redirect 파일 다운로드 권한 제어 및 rails devise 구현

2743 단어 Railsnginx각본HTML
더 읽 기
문제 1: Nginx 의 X - Accel - Redirect?
답:
파일 다운로드 권한 을 정확하게 제어 하 는 것 은 많은 곳 에서 필요 하 다. 예 를 들 어 유상 다운로드 서비스, 인터넷 하 드 디스크, 개인 앨범 등 이 본 사이트 의 내용 이 외부 사이트 에 의 해 도 둑 맞 는 것 을 방지 해 야 한다.
 
파일 을 다운로드 하 는 경로 가 / path / to / files 에 있다 고 가정 합 니 다. 예 를 들 어 / path / to / files / test 1. txt 가 있 으 면 nginx 에서 설정 할 수 있 습 니 다.
location /down {
#       nginx    
    internal;
    alias /path/to/files;
}

 키워드 internal 은 그 디 렉 터 리 들 이 X - Accel - Redirect 헤드 와 배경 스 크 립 트 를 통 해 내부 방향 을 바 꿔 야 한 다 는 것 을 가리킨다.
 
문제 2: rails 는 Nginx 의 X - Accel - Redirect 헤드 를 이용 하여 다운로드 제 어 를 실현 합 니까?
답:
nginx 프로필 에 추가
location /downloads {
    internal;
    alias /path/to/files; #           
}

rails controller 에 추가
def download
  if authenticated? #    ...
    #Set the X-Accel-Redirect header with the path relative to the /downloads location in nginx
    response.headers['X-Accel-Redirect'] = '/downloads/myfile.zip'
    #Set the Content-Type header as nginx won't change it and Rails will send text/html
    response.headers['Content-Type'] = 'application/octet-stream'
    #If you want to force download, set the Content-Disposition header (which nginx won't change)
    response.headers['Content-Disposition'] = 'attachment; filename=myfile.zip'
    #Make sure we don't render anything
    render :nothing => true
  end
end

또한 config / routes. rb 경로 에 이 contrller 의 경 로 를 추가 합 니 다.
 
\ # 다운로드 할 파일 이름 가 져 오기
filename = @params["filename"]
 
문제 3: rails 의 devise 설치 및 http - basic 사용?
답:
devise 는 로그 인 및 인증 권한 을 부여 하 는 솔 루 션 을 제공 합 니 다.
 
rails 3 에 devise 설치
Gemfile 에 추가
gem 'devise'
 
bundle install
 
쓰다
다음은 generate 를 통 해 devise 관련 코드 를 설치 합 니 다.
rails generate devise:install
rails generate devise user
rails generate devise:views
 
rake routes 경로 보기
 
controllers 에 있 는 applicationController. rb 에 추가
before_filter :authenticate_user!
 
devise 의 HTTP Basic Auth 설정
config / initializers / devise. rb 설정
config.http_authenticatable = true
서비스 다시 시작
 
curl -u [email protected]:password http://127.0.0.1/download
curl http://xx%40xx.com:[email protected]/download
 
ps:
rails plugin X-Accel-Redirect
@asc%40
http://presentations.royvandewater.com/authentication-with-devise.html
varnish -> cache
proxy_pass -> config
 
 
 
 

좋은 웹페이지 즐겨찾기