Problème de redirection nginx http vers https
J'essaie de rediriger http://example.com , https://example.com , http://www.example.com vers https://www.example.com . Serveurs écoutant les requêtes http et https via le port 443 via ELB.
configuration nginx:
server {
listen 443;
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
}
server {
listen 443 default;
server_name www.example.com;
//ssl stuffs
}
seuls http://example.com et https://www.example.com fonctionnent comme prévu, mais http://www.example.com va en boucle de redirection infinie.
Quel pourrait être le problème avec le fichier de configuration. Toute aide serait appréciée.
Créez des server
blocs pour gérer la redirection.
server {
listen 80;
server_name www.example.com example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443;
server_name www.example.com;
// ...
}
Mise à jour 1:
Utilisez l'en- X-Forwarded-Proto request
tête pour vous aider à identifier le protocole (HTTP ou HTTPS) utilisé par un client pour se connecter à votre serveur.
server {
listen 443;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443;
server_name www.example.com;
if ($http_x_forwarded_proto = 'http') {
return 301 https://www.example.com$request_uri;
}
// ...
}
Source: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html