我有一箇舊的rails 2.3應用程序,我正在轉移到nginx + Passenger(來自Apache + Passenger)。 Nginx配置爲SSL並且似乎正常工作,除非我從Rails應用程序中陷入302重定向循環。太多的重定向:乘客+ nginx SSLRequirement
rails應用程序認爲請求不是ssl(request.ssl?必須評估爲false)。在production.log中,每個日誌條目都將請求顯示爲http。如果我禁用SSLRequirement插件,那麼重定向循環會消失。但是,我想確保我的Rails應用程序檢測到https請求,以便在創建絕對URL時正確設置協議。
我提到之前的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;
}
這是不相關到你的問題,但你似乎不設置任何標準的代理標題例如「proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header Host $ http_host;」不設置它們可能會產生「令人興奮」的行爲。 – Danack