
내 현재는 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로 전환되고, 시작되는 URL은 SSL로 /users
, 다른 모든 URL은 비 SSL로 전환됩니다. 결과적으로 사용자가 https://www.example.com/
브라우저의 주소 표시줄에 명시적으로 입력하더라도 결과 페이지는 로 리디렉션됩니다 http://www.example.com/
.
위의 설정에 따라 SSL/비 SSL 간에 자동 URL 재작성을 구현하는 방법이 있지만 https://
사용자가 브라우저의 주소 표시줄에 명시적으로 입력한 경우 명시적인 SSL 요청을 계속 존중할 수 있습니까?
답변1
서버 관점에서는 링크를 따라가거나, 사이트를 크롤링하거나, 위치 표시줄에 전체 주소를 입력하여 요청한 내용을 다르게 할 수 있는 방법이 없습니다.
주소를 입력하면 웹 브라우저가 웹 서버에 HTTP 요청을 보냅니다. https를 입력하면 포트 443(기본값)에 연결을 시도하며, 사용자가 요청을 입력했거나 봇이 크롤링한 경우 요청 헤더에는 정보가 포함되지 않습니다.
당신이 할 수 있는 일은 특정 사용자 에이전트에 대해 SSL을 유지하고 다른 사용자 에이전트에 대해 리디렉션하는 것뿐입니다.