Nginx无法将HTTPredirect到HTTPS代理模式

当我使用https协议访问时,它工作。 但是我用http协议访问,根本不起作用。

我的Nginx版本是1.12.1。 这里是configuration:/ etc / nginx / sites-available / ***:

server { listen 80; server_name ***; client_max_body_size 10240M; location / { proxy_pass http://localhost:8080/guacamole/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_cookie_path /guacamole/ /; access_log off; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/***/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/***/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot if ($scheme != "https") { return 301 https://$host$request_uri; } # managed by Certbot } 

我将在nginx上打开debugging日志,并跟踪当您尝试使用http访问您的页面时实际发生的事情。

我也不会推荐在你想实现的内容中使用一个IF语句。 尝试打破两个服务器部分的虚拟主机:

 server { listen 80; server_name ***; rewrite ^ https://***$uri permanent; } server { listen 443 ssl; ssl_certificate /etc/letsencrypt/live/***/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/***/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot server_name ***; client_max_body_size 10240M; location / { proxy_pass http://localhost:8080/guacamole/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_cookie_path /guacamole/ /; access_log off; } }