Nginx
使用 ngixn+unicorn 時 Safari 上的 SSL/HTTPS 問題(無掛鎖圖示)
我有一個在 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 則不給使用者任何回饋並將頁面顯示為不安全。
我不知道該說什麼,是稱讚蘋果過於謹慎還是指責它缺乏視覺回饋。
參考:
https://stackoverflow.com/questions/3292697/find-out-what-resources-are-not-going-over-https
做
ssl_certificate xxxxxxxx/xxxxxxxxx.crt;
包含伺服器證書以及所需的中間圖表(通常由您的 CA 與證書一起提供)?
如果鏈不完整,可能會導致某些瀏覽器(尤其是智能手機)出現問題。