所以我的负载均衡器看起来像这样:

upstream myapp1 {
    server 192.168.0.20;
    server 8.8.8.8 backup;
}

server {
    listen 80 default;

    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;
    }
}
集群上的许多域配置之一(192.168.0.20)如下所示:
server {
    listen 80;

    root /var/www/maximilian.xyz/public_html;
    index index.php index.html index.htm;

    server_name maximilian.xyz www.maximilian.xyz;

    ...
}

现在有一点你不知道!
我一直在使用stream {...}配置关注此tutorial,以尝试以与上述类似的方式涵盖ssl/https/443:
stream {
    upstream myapp1 {
        server 192.168.0.20:443;
        server 8.8.8.8:443 backup;
    }

    server {
            listen 443 ssl;
            proxy_pass myapp1;
    }
}
这次,我在192.168.0.20处添加了集群:
server {
    listen 443 ssl;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/maximilian.xyz/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/maximilian.xyz/privkey.pem;

    server_name maximilian.xyz www.maximilian.xyz;

    root /NAS/maximilian.xyz/public_html;
    index index.php index.html index.htm;

    ...
}
当DNS记录直接指向192.168.0.20时,哪一个效果很好(https)。

但是,当我运行负载平衡器时,它根本无法工作。运行service nginx configtest时,nginx上的一切都很好。
我在负载均衡器上运行了tcpdump port 443 and '(tcp-syn|tcp-ack)!=0',访问https://maximilian.xyz/时返回了该值,但是在集群上运行时却什么也没捡到,这意味着tcp数据包没有被传递,为什么?
如果这是一个糟糕的选择,请告诉我。
有什么方法可以在负载均衡器上设置SSL证书,然后将这些证书传递给群集?那是更好的方法吗?

最佳答案

根据http://nginx.org/docs/stream/ngx_stream_upstream_module.html#server上的文档:



但是看来您的问题缺少所述端口。

因此,也许可以做到这一点:

 stream {
    upstream myapp1 {
-        server 192.168.0.20;
+        server 192.168.0.20:433;

(作为一个旁注,为什么要使用8.8.8.8作为上游备份?这不应该是Google的公共(public)DNS服务吗?)

另外,实际上,您可以直接在流上设置证书,请参阅http://nginx.org/docs/stream/ngx_stream_ssl_module.html,SSL指令与它们在流模块外部基本相同。然后,您可以按照http://nginx.org/docs/stream/ngx_stream_proxy_module.html#proxy_ssl使用proxy_pass bool 型指令将它proxy_ssl到一个HTTP上游或一个https上游。

关于ssl - 如何使用Nginx从http负载均衡器迁移到https负载均衡器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35177029/

10-16 20:15