使用NGINX将HTTP重定向到HTTPS

问题描述 投票:0回答:1

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

这是我们的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。我不知道这与server_name是否为localhost有关,因为我仅在网上看到示例将示例重定向到实际域名,但这是我们的应用程序的设置方式,我不知道如果更改将影响我们应用程序的连接。如果有人对如何使重定向正常工作有任何想法或建议,那就太好了。谢谢!

nginx nginx-config
1个回答
1
投票

您最后缺少分号,也应该摆脱proxy_pass,因为那样会覆盖行为。

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

    location / {
        return 301 https://$host$request_uri;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.