使用NGINX将HTTP重定向到HTTPS

使用NGINX将HTTP重定向到HTTPS,nginx,nginx-config,Nginx,Nginx Config,我在工作中维护了几个应用程序,并注意到一些员工能够使用这些应用程序的非安全路径,例如:example.com、www.example.com。使用这些路径中的任何一个都会将它们指向HTTP路径而不是HTTPS,除非它们在url中指定HTTPS。我们目前使用nginx作为网关,但我没有对nginx网关进行初始配置,所以我不知道什么可行,什么不可行 下面是nginx.conf文件的一个片段 server{ listen 80 default_server; list

我在工作中维护了几个应用程序,并注意到一些员工能够使用这些应用程序的非安全路径,例如:example.com、www.example.com。使用这些路径中的任何一个都会将它们指向HTTP路径而不是HTTPS,除非它们在url中指定HTTPS。我们目前使用nginx作为网关,但我没有对nginx网关进行初始配置,所以我不知道什么可行,什么不可行

下面是nginx.conf文件的一个片段

server{
        listen  80 default_server;
        listen  [::]:80 default_server;
        server_name localhost;

        location / {
            proxy_pass http://localhost:3000;
        }
}

# Settings for a TLS enabled server.

    server {
        listen      443 ssl http2 default_server;
        listen      [::]:443 ssl http2 default_server;
        server_name     localhost;

        ssl_certificate "/etc/nginx/ssl/domain-crt.txt";
        ssl_certificate_key "/etc/nginx/ssl/domain-key.txt";
        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

        ## More configuration below this...
    }

我尝试在listen 80部分中返回,但没有成功:

server{
        listen  80 default_server;
        listen  [::]:80 default_server;
        server_name localhost;
        return 301 https://$host$request_uri;

        location / {
            proxy_pass http://localhost:3000;
        }
}


我重新加载了带有更正的nginx,并且仍然能够连接到http路径,而无需将其重定向到https。我不知道这是否与服务器名为localhost有关,因为我在网上只看到过一些示例,它们会重定向到实际的域名,但这就是我们的应用程序的设置方式,我不知道更改这些名称是否会对我们的应用程序的连接产生影响。如果有人对如何让重定向正常工作有任何想法或建议,那就太好了。谢谢

您缺少结尾处的分号,您还应该去掉代理传递,因为它会覆盖行为

server {
    listen  80 default_server;
    listen  [::]:80 default_server;
    server_name localhost;

    location / {
        return 301 https://$host$request_uri;
    }
}

缺少分号可能只是这篇文章中的一个输入错误,但我将尝试您建议的方法,看看是否有效;在这里可以找到更多的文档,所以看起来我缺少了分号。输入分号并重新加载nginx解决了这个问题。不管怎样,我都会接受你的答案,因为它可能会在将来帮助别人。谢谢