
我的電流nginx.conf
看起來像這樣:
server {
listen 80;
server_name www.example.com;
root /var/www/;
location / {
}
location /users {
rewrite ^ https://$http_host$request_uri? permanent;
}
}
server {
listen 443 ssl;
server_name www.example.com;
root /var/www/;
location /users {
}
location / {
rewrite ^ http://$http_host$request_uri? permanent;
}
}
透過此配置,當使用者導航網站上的頁面時,連線會在 ssl/非 ssl 之間切換,以 ssl 開頭的 url 為 ssl,/users
而對於所有其他 url 則為非 ssl。因此,即使使用者https://www.example.com/
在瀏覽器的網址列中明確鍵入,結果頁面也會重定向到http://www.example.com/
.
有沒有一種方法可以實現 ssl/非 ssl 之間的自動 url 重寫,如上述設定所實現的那樣,但如果https://
用戶在瀏覽器的地址列中明確鍵入,則仍然尊重顯式 ssl 請求?
答案1
從伺服器的角度來看,沒有辦法區分點擊連結、抓取網站或在網址列中鍵入完整位址所發出的請求。
當您輸入位址時,Web 瀏覽器會向您的 Web 伺服器發送 HTTP 請求。如果您輸入 https,它將嘗試連接到連接埠 443(預設),並且如果使用者輸入了請求或請求,或者例如機器人抓取了它,則請求標頭不會包含資訊。
您所能做的就是為某些用戶代理保留 SSL,並為其他用戶代理保留重定向。