Nginx http和https阻止配置

时间:2016-03-04 13:17:40

标签: http ubuntu ssl nginx https

我正在设置负载均衡器,如果没有https配置文件,可以使用https和http。

我有多个虚拟主机尝试将http流量重定向到https(类型1 ),如下所示:

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

server {
    listen 443 ssl;
    server_name example.xyz;

    ssl on;
    ssl_certificate             /etc/nginx/ssl/example.xyz/fullchain.pem;
    ssl_certificate_key         /etc/nginx/ssl/example.xyz/privkey.pem;

    location / {
        proxy_pass                              http://myapp1;
        proxy_set_header                Host                            $host;
        proxy_set_header        X-Real-IP                       $remote_addr;
        proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto       $scheme;
    }

}

我也有一个虚拟主机用于所有的http流量(类型2 ),就像这样。

upstream myapp1 {
    server 8.8.8.8;
    server 8.8.4.4 backup;
}

server {
    listen 80 default_server;
    location / {
        proxy_pass http://myapp1;
        proxy_set_header Host $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

此设置无效。我有两个问题

  1. 类型1 虚拟主机未重定向到https。

  2. 我有foo.combar.combaz.com类型1 配置,但使用了bar.combaz.com来自foo.com

  3. 的ssl证书

1 个答案:

答案 0 :(得分:0)

对于您的第一个问题,请尝试执行重定向:

return 301 https://$host$request_uri;

由于您配置了两个服务器名,我更喜欢直接从传入请求中使用主机信息。见http://nginx.org/en/docs/http/ngx_http_core_module.html#var_host

对于你的第二个问题我什么都不能说。你的粘贴配置看起来很好。确保不同的文件夹包含不同的证书; - )