首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为Synology驱动器设置nginx反向代理?

如何为Synology驱动器设置nginx反向代理?
EN

Server Fault用户
提问于 2022-01-23 18:54:47
回答 1查看 4K关注 0票数 0

tl;

博士

我尝试将nginx设置为将超过6690的TCP连接转发到Synology。但是当使用listen 6690 ssl;时,Synology客户端无法找到NAS,当使用listen 6690; (不使用SSL)时,可以找到NAS,但是使用它的未签名证书而不是用nginx存储的证书。知道如何启用SSL并使用带有Synology的nginx反向代理吗?

Intro

我已经找到了几个帖子/问题,解释如何使用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

代码语言:javascript
运行
复制
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中添加了以下行:

代码语言:javascript
运行
复制
...

include /etc/nginx/fallthrough.conf;

/etc/nginx/fallthrough.conf包含以下内容:

代码语言:javascript
运行
复制
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时,即:

代码语言:javascript
运行
复制
stream {

    upstream synology_drive {
         server :6690;
    }

    server {
        listen     6690;
        proxy_pass synology_drive;
    }
}

找到了Synology,但是使用了存储在NAS上的自签名证书,而不是存储在反向代理计算机上的“让我们加密”的证书。

有谁知道我在做什么或者可能做错了什么吗?

EN

回答 1

Server Fault用户

发布于 2022-01-23 21:08:12

stream模块是第4层的代理模块,它只在连接的客户端和代理服务器之间转发TCP数据包。

由于TLS发生在更高的级别上,因此nginx不参与SSL加密。实际上,我感到惊讶的是,nginx在您配置中的ssl_certificate指令上没有出现错误。

您唯一的选择是将私钥和证书从nginx复制到Synology设备,因为在这种情况下,它是终止TLS连接的实体。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1090895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档