Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl 如何使用nginx从http负载平衡器迁移到https负载平衡器_Ssl_Nginx_Tcp_Https_Load Balancing - Fatal编程技术网

Ssl 如何使用nginx从http负载平衡器迁移到https负载平衡器

Ssl 如何使用nginx从http负载平衡器迁移到https负载平衡器,ssl,nginx,tcp,https,load-balancing,Ssl,Nginx,Tcp,Https,Load Balancing,因此,我的负载平衡器如下所示: 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-I

因此,我的负载平衡器如下所示:

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;
    }
}
server {
    listen 80;

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

    server_name maximilian.xyz www.maximilian.xyz;
   
    ...
}
集群上的许多域配置之一(
192.168.0.20
)如下所示:

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;
    }
}
server {
    listen 80;

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

    server_name maximilian.xyz www.maximilian.xyz;
   
    ...
}

现在你不知道了! 我一直在使用
流{…}
配置来遵循这一点,试图以与上面类似的方式覆盖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)


但当我运行负载平衡器时,它根本不工作。运行
服务nginx configtest
时,nginx上的一切正常

我已经运行了
tcpdump端口443和“(tcp-syn | tcp-ack)=0'
在访问
https://maximilian.xyz/
但是在集群上运行时,没有拾取任何内容,这意味着tcp数据包没有被传递,为什么

如果这是一个糟糕的选择,请告诉我

有没有办法在负载平衡器上设置SSL证书并将这些证书传递给集群?这是更好的方法吗



根据以下文件:

该地址可以指定为域名或带有强制端口的IP地址

然而,你的问题似乎遗漏了这一点

因此,也许这会起到作用:

 stream {
    upstream myapp1 {
-        server 192.168.0.20;
+        server 192.168.0.20:433;
(作为旁注,为什么要使用8.8.8.8作为上游备份?这不应该是谷歌的公共DNS服务吗?)


或者,您确实可以在流中设置证书,请参见,SSL指令基本上与流模块外部的指令相同。然后,您可以使用
proxy\u ssl
boolean指令将它传递到http上游或https上游。

尝试了流更改,但没有成功。还有我可以调试的吗?@Maximilian,错误日志怎么说?您是否注意到,
stream
仅在相对较新的nginx版本中受支持,即使如此,它还是一个编译时选项,在nginx提供的默认情况下被禁用?您是否启用了所有这些流模块?我使用了最新的nginx并运行
system nginx configtest
返回OK。如果我启用了模块,我还能调试吗?@Maximilian,你可以使用
nginx-V
;错误日志怎么说?
--with stream--with-stream\u ssl\u module
都在其中我怀疑您的问题是您在流中的服务器块中启用了“ssl”。实际上,你只是想纯粹地传递它,而不是试图解释它。nginx可能忽略了它(因为您没有收到错误),但这是唯一突出的地方。@jdewald现在将删除它!不走运:(我真的不明白为什么这不起作用!!