max*_*sme 5 ssl https tcp load-balancing nginx
所以我的负载均衡器看起来像这样:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
cluster(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;
...
}
Run Code Online (Sandbox Code Playgroud)
我一直在使用配置尝试以与上面类似的方式覆盖ssl/https/443来学习本教程stream {...}
:
stream {
upstream myapp1 {
server 192.168.0.20:443;
server 8.8.8.8:443 backup;
}
server {
listen 443 ssl;
proxy_pass myapp1;
}
}
Run Code Online (Sandbox Code Playgroud)
这次我在群集中添加了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;
...
}
Run Code Online (Sandbox Code Playgroud)
当DNS记录直接指向192.168.0.20时,其工作完美(https).
但是,当我通过负载平衡器时,它根本不工作.运行时,nginx上的一切都很好service nginx configtest
.
我已经运行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的文档:
地址可以指定为域名或带有强制端口的 IP 地址
但您的问题似乎缺少所述端口。
因此,也许这会起作用:
stream {
upstream myapp1 {
- server 192.168.0.20;
+ server 192.168.0.20:433;
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,为什么你使用 8.8.8.8 作为上游备份?这不是 Google 的公共 DNS 服务吗?)
或者,您确实可以在流中设置证书,请参阅http://nginx.org/docs/stream/ngx_stream_ssl_module.html,SSL 指令基本上与流模块之外的指令几乎相同。然后,您可以按照http://nginx.org/docs/stream/ngx_stream_proxy_module.html#proxy_sslproxy_pass
使用布尔指令将其连接到 http 上游或 https 上游。proxy_ssl
归档时间: |
|
查看次数: |
740 次 |
最近记录: |