Лучше придерживаться текущего протокола.
Если ваша производственная среда использует apache или nginx для статических ресурсов и ssl, убедитесь, что заголовок X-FORWARDED_PROTO https отправляется работнику, когда клиентский запрос находится на порту https.
Таким образом, рабочие будут знать, что ssl фактически обрабатывается извне, и они могут генерировать ссылки с правильным протоколом.
Я знаю, что было бы лучше при сбое сервера, чем здесь, но вот пример конфигурационного файла nginx, который вызывает https и устанавливает правильные заголовки для управления ssl у работников единорога:
upstream WEBAPP_NAME {
server unix:/path/to/webapp/tmp/sockets/unicorn.sock fail_timeout=0;
}
server {
listen 4343;
server_name example.com;
root /path/to/webapp/public;
access_log /path/to/logs/nginx-access.log;
error_log /path/to/logs/nginx-error.log;
rewrite_log on;
ssl on;
# redirect when http request is done on https port
error_page 497 https://example.com:4343$request_uri;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location ~ ^/assets/ {
expires 1y;
add_header Cache-Control public;
add_header ETag "";
break;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-FORWARDED_PROTO https;
proxy_pass http://WEBAPP_NAME;
proxy_redirect default;
}
}