Nginx:将默认网站 http 重定向到 https

Nginx:将默认网站 http 重定向到 https

我有一个网站,可能链接到未知数量的 CNAME DNS 记录。我需要将所有 http 请求重定向到 https。我们将使用默认证书。无论是在浏览器中输入的 IP 地址还是 DNS 名称 - 都需要转发到 https

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

我也尝试过$server_name。如果我访问 http://,它会将我重定向到“https://_RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}“。Apache中是否有与之对应的内容?

答案1

看来 nginx 具有与 Apache 中的 HTTP_HOST 相同的功能。因此这对我来说有效:

return         301 https://$http_host$request_uri;

答案2

执行 Nginx 重定向的正确方法是使用 HTTP 301,而不是重写。请参阅这里

至于您的服务器设置,请参阅下面的设置。我在端口 80 上定义服务器名称,然后重定向到端口 443 上的 HTTPS。所有内容(SSL 设置、根、索引等...)都应用于此 HTTPS 服务器块下。

server {
        listen 80 default_server;                       #Listen on IPv4
        listen [::]:80;                                 #Listen on IPv6
        server_name loganmarchione.com;
        return 301 https://$host$request_uri;           #Redirect HTTP to HTTPS
}

server {
        listen 443 ssl spdy;                            #Listen on IPv4
        listen [::]:443 ssl spdy;                       #Listen on IPv6

        ssl_certificate /etc/nginx/ssl/unified2.crt;
        ssl_certificate_key /etc/nginx/ssl/my-private-decrypted.key;

        ...

相关内容