博士
我尝试将nginx设置为将超过6690的TCP连接转发到Synology。但是当使用listen 6690 ssl;
时,Synology客户端无法找到NAS,当使用listen 6690;
(不使用SSL)时,可以找到NAS,但是使用它的未签名证书而不是用nginx存储的证书。知道如何启用SSL并使用带有Synology的nginx反向代理吗?
我已经找到了几个帖子/问题,解释如何使用nginx作为另一台计算机上的反向代理来建立到Synology的SSL连接。因此,在访问时(https://)my-domain.com我可以(已经)访问我的Synology的设置网站(即可以通过端口5000/5001访问DSM )。但是,我也想设置Synology来使用同样的SSL证书--让我们加密,但是在这里,我在设置nginx时遇到了困难。
因此,我只想配置Synology,并设置drive.my-domain.com的DNS以到达我的路由器。此外,我获得了该域的SSL证书,并将Synology端口调整为10003。在我的路由器中,我按照推荐的这里将端口80、443和6690转发给反向代理。对于nginx,我配置了/etc/nginx/conf.d/synology.conf
:
include /etc/letsencrypt/options-ssl-nginx.conf;
server {
listen 80;
server_name drive.my-domain.com default_server;
# For Let's Encrypt verification
location ^~ /.well-known {
allow all;
root /data/letsencrypt/;
}
}
server {
listen 80;
listen 443 ssl;
server_name drive.my-domain.com;
location / {
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;
proxy_pass https://:10003;
proxy_read_timeout 90;
}
ssl_certificate /etc/letsencrypt/live/drive.my-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/drive.my-domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
}
此外,我在/etc/nginx/nginx.conf
中添加了以下行:
...
include /etc/nginx/fallthrough.conf;
/etc/nginx/fallthrough.conf
包含以下内容:
stream {
upstream synology_drive {
server :6690;
}
server {
listen 6690 ssl;
proxy_pass synology_drive;
ssl_certificate /etc/letsencrypt/live/drive.my-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/drive.my-domain.com/privkey.pem;
}
}
但是,当尝试设置Synology客户端时,它无法连接/查找Synology。将/etc/nginx/fallthrough.conf
更改为不使用SSL时,即:
stream {
upstream synology_drive {
server :6690;
}
server {
listen 6690;
proxy_pass synology_drive;
}
}
找到了Synology,但是使用了存储在NAS上的自签名证书,而不是存储在反向代理计算机上的“让我们加密”的证书。
有谁知道我在做什么或者可能做错了什么吗?
发布于 2022-01-23 21:08:12
stream
模块是第4层的代理模块,它只在连接的客户端和代理服务器之间转发TCP数据包。
由于TLS发生在更高的级别上,因此nginx不参与SSL加密。实际上,我感到惊讶的是,nginx在您配置中的ssl_certificate
指令上没有出现错误。
您唯一的选择是将私钥和证书从nginx复制到Synology设备,因为在这种情况下,它是终止TLS连接的实体。
https://serverfault.com/questions/1090895
复制相似问题