Nginx-将HTTP重定向到HTTPS

时间:2020-09-27 21:39:50

标签: .net http nginx networking

我遵循了一些有关在Lightsail上设置.Net Core服务器以及如何为Nginx设置SSL的教程,产生了以下“默认”配置文件:

server {
    listen 80 http2 default_server;
    root /var/www/mywebsite/wwwroot;
    server_name mywebsite.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    root /var/www/mywebsite/wwwroot;
    ssl_certificate /etc/letsencrypt/live/www.mywebsite.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.mywebsite.com/privkey.pem;
    location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $http_host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

我目前能够连接到https://mywebsite.comhttps://www.mywebsite.com,但是当我尝试使用http版本时,找不到任何内容,或者在chrome上下载了带有一些奇怪字符的文件。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:1)

Try this:

    
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com; 
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.example.com; 
    ssl on;
}

答案 1 :(得分:0)

该错误似乎是由仅支持HTTP / 2和SSL的浏览器引起的。就我而言,这不是问题,因为我将重定向到安全站点,因此将第一个服务器块的第1行从更改为

listen 80 http2;

listen 80;

解决了我的问题,现在重定向有效。