nginx httpredirect到https无限循环

我有我的configuration文件。 这是一个旧的。

server { listen 80; server_name .lala.mana.lan; access_log /var/log/nginx/lala.access.log; error_log /var/log/nginx/lala.error.log; proxy_conect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; location / { proxy_pass http://lala proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_redirect off; } location ~* /web/static/{ proxy_cache_valid 200 60m; proxy_buffering on; proxy_pass http://lala; } } 

现在我正试图从一个站点redirect到另一个从http到https。 这是我编辑的configuration文件:

 server { listen 80; listen 443 ssl; ssl_certificate /etc/ssl/mana.crt; ssl_certificate_key /etc/ssl/mana.key; server_name .lala.mana.lan; return 301 https://lala.mana.lt$request_uri; access_log /var/log/nginx/lala.access.log; error_log /var/log/nginx/lala.error.log; proxy_conect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; location / { proxy_pass http://lala proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_redirect off; } location ~* /web/static/{ proxy_cache_valid 200 60m; proxy_buffering on; proxy_pass http://lala; } client_header_buffer_size 64k; large_client_header_buffers 4 64k; } 

您需要为http和https分开块,以便从一个到另一个redirect。

所以,你的configuration应该是这样的:

 server { listen 80; server_name lala.man.lt; return 301 https://lala.man.lt$request_uri; } server { listen 443 ssl; server_name lala.man.lt; ssl_certificate /etc/ssl/mana.crt; ssl_certificate_key /etc/ssl/mana.key; access_log /var/log/nginx/lala.access.log; error_log /var/log/nginx/lala.error.log; proxy_conect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; location / { proxy_pass http://lala proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_redirect off; } location /web/static/ { proxy_cache_valid 200 60m; proxy_buffering on; proxy_pass http://lala; } client_header_buffer_size 64k; large_client_header_buffers 4 64k; } 

我也修复你的/web/static位置块使用简单的前缀匹配,涉及正则expression式匹配不需要。