nginx将所有https url重定向到唯一的443服务器块

时间:2018-05-12 16:47:43

标签: ssl nginx https lets-encrypt

我在我的nginx服务器上配置了三个服务器块:2个侦听80(http),另一个侦听443个(https)。

https服务器块配置文件如下:

server {
server_name foo.example.com;

location / {
    root  /var/nginx_root/yt/html;
    index  index.html index.htm;
}

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/........ # managed by Certbot
ssl_certificate_key /etc/...... # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/.......
}

server {
    if ($host = foo.example.com {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen  80;
    server_name foo.example.com;
    return 404; # managed by Certbot

}

在http服务器块中,也设置了server_name。

这些服务器块运行良好,但是如果我输入除https服务器块中定义的以外的任何https URL,它将被重定向到https://foo.example.com

例如,如果我输入https:blabla.example.com,则会重定向到https:foo.example.com

似乎只有一个https块,所有https请求都会转到这个,不管server_name是什么!

我需要的是,如果我输入https:blabla.example.com,则返回404,因为此server_name不存在。

由于

0 个答案:

没有答案