http - Nginx http 和 https block 配置

标签 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.com类型 1 配置, bar.combaz.com但是bar.combaz.com使用来自 foo.com 的 ssl 证书

最佳答案

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

return 301 https://$host$request_uri;

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

对于你的第二个问题,我无话可说。您粘贴的配置看起来不错。确保不同的文件夹包含不同的证书 ;-)

关于http - Nginx http 和 https block 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797089/

相关文章:

java - 确定 Java 中 TLS 握手的 Diffie-Hellman "Parameters"长度

java - 使用 HttpClient 进行客户端身份验证

php - 带有 GET 参数(或同等参数)的电子邮件地址

ubuntu - Virtualbox:从 ​​Vagrant Ubuntu 环境中检索数据

Ruby Mechanize 在身份验证重定向期间崩溃; sslv3 警报非法参数

php - .htaccess 重写托管在 Bitnami/EC2 上的 Wordpress 主机

ubuntu - 在 cloud init runcmd 中使用管道失败

php - 如何在保存提示期间不向浏览器发送所有文件数据?

http - 为什么 Comet 需要 multipart/x-mixed-replace?

java - 纯文本的 Spring Boot 内容 header