【问题标题】:nginx redirect multiple servers to SSLnginx 将多个服务器重定向到 SSL
【发布时间】:2016-02-08 14:30:07
【问题描述】:

我有这个代码。我只希望列表中的每个 server_name 都重定向到它自己的名称 https。但是,如果我执行http://beta.example.com,它会重定向到https://api.example.com(或列表中的第一项)

server {
    listen         80;
    server_name    api.example.com beta.example.com apibeta.example.com nodebeta.example.com app.example.com;
    return         301 https://$server_name$request_uri;
}

【问题讨论】:

    标签: ssl nginx


    【解决方案1】:

    您应该可以改用$host 变量:

    server {
        listen         80;
        server_name    api.example.com beta.example.com apibeta.example.com nodebeta.example.com app.example.com;
        return         301 https://$host$request_uri;
    }
    

    【讨论】:

    • 是的,我们刚刚想通了。虽然我读过你应该尽可能使用自己的变量,即 $server_name,而不是 $host,但 $server_name 似乎由于某种原因不起作用
    • 或者,如果您想将所有域重定向到 HTTPS,您可以使用通配符服务器名称:server_name _;
    • 我可以想象$server_name 是基于配置派生的,而$host 是在特定请求期间使用Host: 标头指定的值。
    • 如果地址是用前面的方案 http 给出的,这对我不起作用,所以 beta.example.com 正确重定向,但 beta.example.com 重定向到 api.example.com。这是预期的行为吗?
    猜你喜欢
    • 2019-02-19
    • 2018-04-11
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多