
Mi actual nginx.conf
se parece a esto:
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;
}
}
Con esta configuración, la conexión cambia de/a SSL/no SSL cuando un usuario navega por las páginas del sitio, SSL para las URL que comienzan con /users
y no SSL para todas las demás URL. Como resultado, incluso si el usuario escribe explícitamente https://www.example.com/
en la barra de direcciones del navegador, la página resultante es redirigida a http://www.example.com/
.
¿Hay alguna manera de implementar la reescritura automática de URL entre SSL/no SSL como se logra con la configuración anterior, pero aún así respetar la solicitud SSL explícita si https://
el usuario la escribe explícitamente en la barra de direcciones del navegador?
Respuesta1
Desde el punto de vista del servidor, no hay forma de diferir la solicitud realizada siguiendo un enlace, rastreando un sitio o escribiendo la dirección completa en la barra de direcciones.
Cuando escribe una dirección, el navegador web envía una solicitud HTTP a su servidor web. Si escribió https, intentará conectarse al puerto 443 (de forma predeterminada) y los encabezados de la solicitud no contienen información si el usuario escribió la solicitud o la solicitud o, por ejemplo, el bot la rastreó.
Todo lo que puede hacer es mantener SSL para ciertos agentes de usuario y redirigir para otros.