我一直在研究这个问题,却找不到确切的答案。在部署到生产之前,我确实试图了解这一点,而且我发现的大多数nginx资源都不清楚在向代理提供流量时,nginx背后发生了什么。
基本上,我试图加密来自nginx的客户端请求,以及从nginx加密到其背后的代理服务器的请求。在阅读完之后,以及下面的例子,我想出了一个似乎正在工作的配置。至少在客户端通过SSL接收请求时起作用。
我的问题是,我最初对加密通信量的关注是通过以下配置实现的,还是从nginx到代理服务器的连接仍然是通过http而不是https实现的:
upstream app1 {
server app1:3000;
}
upstream app2 {
server app2:5000;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name localhost;
ssl_certificate /etc/ssl/localhost-cert.crt;
ssl_certificate_key /etc/ssl/localhost-privkey.key;
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://app1;
}
location /api {
proxy_pass http://app2;
}
}
如果从nginx到代理服务器的连接仍然是明文的,那么我将如何加密来自nginx的数据,而不是从应用服务器本身加密?
发布于 2019-02-14 14:21:25
您的配置使用普通HTTP与后端服务器联系,为了保护此路径,您也需要在此部分使用https。关于如何在官方医生中实现这一点,有一篇很好的文章
https://serverfault.com/questions/953950
复制相似问题