nginx X - Accel - Redirect 파일 다운로드 권한 제어 및 rails devise 구현
문제 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
새로운 UI의 Stripe Checkout을 Rails로 만들어 보았습니다.Stripe의 옛 디자인인 Stripe의 구현 기사는 많이 있습니다만, 지금 현재의 디자인에서의 도입 기사는 발견되지 않았기 때문에 투고합니다. Stripe의 체크아웃을 stripe의 문서라든지 stackoverfl...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.