나는 아파치 + 승객에서 nginx + Passenger로 이동하는 과정에있는 오래된 레일 2.3 앱을 가지고있다. Nginx는 SSL 용으로 구성되어 있으며 Rails 응용 프로그램에서 302 리디렉션 루프가 작동하지 않는 것을 제외하고 올바르게 작동하는 것으로 보입니다.너무 많은 리다이렉트 : passenger + nginx SSLRequirement
레일 앱은 요청이 ssl이 아니라고 생각합니다 (request.ssl?은 false로 평가되어야 함). production.log에서 각 로그 항목은 요청을 http로 표시합니다. SSLRequirement 플러그인을 사용하지 않으면 리디렉션 루프가 사라집니다. 그러나, 난 절대적 URL을 만들 때 프로토콜을 올바르게 설정할 수 있도록 내 레일 애플 리케이션이 https 요청을 감지하고 있는지 확인하고 싶습니다.
이전 Apache + Passenger 설정을 언급 한 유일한 이유는 SSLRequirement 플러그인이 해당 구성에서 제대로 작동하고 있다는 것입니다.
내 가상 호스트에 대한의 nginx의 설정은 다음과 같습니다
server {
listen 443 ssl;
server_name new.example.com;
root /home/user/railsapps/example-setup/public;
passenger_enabled on;
ssl_certificate /etc/nginx/ssl/2013/example.com.chained.crt;
ssl_certificate_key /etc/nginx/ssl/2013/example.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
}
본인은 X-전달 - 프로토 이제 레일의 표준이면 모르겠지만, 레일에 나를 위해
request.ssl?
자동으로 작동 귀하의 질문에하지만 당신은 표준 프록시 헤더 중 하나를 설정하지 않는 것 같습니다 "proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-for $ proxy_add_x_forwarded_for; proxy_set_header 호스트 $ http_host;" 그것들을 설정하지 않으면 '흥분되는'행동을 일으킬 수 있습니다. – Danack