У меня есть приложение, работающее на nginx + unicorn. Так выглядит мой серверный блок
upstream rtdev{
# fail_timeout=0 means we always retry an upstream even if it failed
# to return a good HTTP response (in case the Unicorn master nukes a single worker for timing out).
server unix:/tmp/rtapp.sock fail_timeout=0;
}
server{
listen 443 ssl; # default;
server_name devapp.resolutiontweet.com;
root /home/xxxxxxx/xxxxxxxxx/public;
client_max_body_size 12M;
ssl on;
ssl_certificate xxxxxxxx/xxxxxxxxx.crt;
ssl_certificate_key xxxxxxxx/xxxxxxxxx.key;
ssl_ciphers "AES256+EECDH:AES256+EDH";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_stapling on; # Requires nginx >= 1.3.7
ssl_stapling_verify on; # Requires nginx => 1.3.7
location / {
access_log off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_headers_hash_max_size 8192;
proxy_headers_hash_bucket_size 256;
proxy_pass http://rtdev;
#proxy_redirect http://rtdev https://devapp.resolutiontweet.com;
}
}
Я столкнулся со странной проблемой, когда Safari не показывает символ «Блокировка» для защищенного сайта. Все остальные браузеры показывают это (проверено в Chrome и Firefox). Прикрепляю скриншоты для справки.
Mozilla Firefox Google Chrome Safari Изменение некоторых вещей в моем блоке сервера устраняет проблему, но сайт не загружается. Например, изменение, proxy_pass http://rtdev; --> proxy_pass https://rtdev;
решает проблему, но nginx выдает ошибку 501.
Буду признателен, если кто-нибудь сможет пролить свет на то, как решить / отладить проблему. Спасибо.
РЕДАКТИРОВАТЬ: сертификаты правильно связаны. Я проверил настройки на нескольких сторонних сайтах, и все вроде нормально.
Я выяснил причину, и она не имеет ничего общего с конфигурацией моего сервера.
Очевидно, небезопасный сценарий был динамически внедрен одной из библиотек, которые я использовал. Сценарий использовал http не https.
Firefox и Chrome указывают на то, что страница содержит небезопасные сценарии, Safari, с другой стороны, не дает пользователю никаких отзывов и показывает страницу как небезопасную.
Я не знаю, что сказать, аплодировать ли Apple за чрезмерную осторожность или обвинять ее в отсутствии визуальной обратной связи.
Ссылки:
https://stackoverflow.com/questions/3292697/find-out-what-resources-are-not-going-over-
Делает
ssl_certificate xxxxxxxx/xxxxxxxxx.crt;
содержат сертификат сервера, а также необходимые промежуточные диаграммы (обычно поставляемые вашим центром сертификации вместе с сертификатом)?
Если цепочка неполная, это может вызвать проблемы с некоторыми браузерами (и особенно смартфонами).