通过域名和 Nginx 实现公网访问 NAS:配置 SSL 证书与反向代理
本文最后更新于 65 天前,如有失效请评论区留言。

一站式教程:从 Nginx 安装、域名解析到 SSL 配置,结合反向代理与证书,让你轻松实现公网通过域名访问 NAS 服务,包括 DSM、Jellyfin 等。

合规与安全提示

本文讲解的配置仅适用于合法拥有的设备与域名,请确保你有权限进行该操作。配置 HTTPS 时,请选择正规受信证书,避免使用自签证书导致浏览器警告。

方案概述与准备

  • 目标:通过 Nginx 配置实现通过 域名 访问 NAS,同时使用 SSL 保障安全通信。

  • 准备工作

    • 购买并解析域名:购买域名(如 nas.example.com),并将其解析到 ECS(或部署 Nginx 的服务器)公网 IP。具体可参阅阿里云 ECS 购买与部署宝塔面板 + 域名购买及ICP备案全流程(2025)

    • 安装 Nginx:在服务器上安装并配置 Nginx 反向代理服务,指向 NAS 的 DSM 或其他应用端口。

    • 配置 SSL 证书:通过 Let’s Encrypt 免费获取 SSL 证书,或者手动上传证书以启用 HTTPS 加密。

安装 Nginx(没有通过宝塔面板安装)

更新系统与安装 Nginx

首先更新系统软件包:

sudo apt update

安装 Nginx:

sudo apt install nginx

启动并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

备份原配置文件:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

创建或编辑网站配置:

sudo vim /etc/nginx/sites-available/nas

直接跳到第5节。

通过宝塔面板安装安装 Nginx

通过systemd配置服务

sudo vim /etc/systemd/system/nginx.service

 填入

[Unit]
Description=nginx - high performance web server
After=network.target

[Service]
Type=forking
ExecStart=/www/server/nginx/sbin/nginx
ExecReload=/www/server/nginx/sbin/nginx -s reload
ExecStop=/www/server/nginx/sbin/nginx -s stop
PIDFile=/www/server/nginx/logs/nginx.pid

[Install]
WantedBy=multi-user.target
#确认 Nginx 配置文件位置 
ls /www/server/nginx/conf/ # 查看是否有nginx.conf 或类似的文件

备份原配置文件:

sudo cp /www/server/nginx/conf/nginx.conf /www/server/nginx/conf/nginx.conf.bak

创建或编辑网站配置:

sudo vim /www/server/nginx/conf/nginx.conf

填入内容见第5节。

HTTP 请求重定向到 HTTPS

填入

server 
    {
        listen 80;
        server_name nas.example.cn;
    
        # 将 HTTP 请求重定向到 HTTPS
        location / {
            return 301 https://$server_name$request_uri;
        }
    }
server 
    {
        listen 443 ssl;
        server_name nas.example.cn;
    
        ssl_certificate /www/server/nginx/conf/nas.example.cn.pem;
        ssl_certificate_key /www/server/nginx/conf/nas.example.cn.key;
    
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
        ssl_prefer_server_ciphers on;
        
        # 统一转发头
        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;
        client_max_body_size 200m;
        
        location / {
        proxy_pass https://127.0.0.1:开放的远程访问端口(见frpc客户端/;
        proxy_ssl_server_name on;
        proxy_ssl_name 127.0.0.1;
        proxy_read_timeout 300;
        }
    }

配置 SSL 证书

使用 Let’s Encrypt 配置 SSL

使用 Certbot 来自动获取 SSL 证书:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d nas.ganglitm.cn

完成后,Certbot 会自动配置 SSL 并为 Nginx 添加相关的 SSL 配置。

手动上传 SSL 证书

  • 通过阿里云或其他证书服务商获取并下载证书(下载nginx版本的)。

  • 上传到服务器指定目录(如 /www/server/nginx/conf/)。

  • 编辑 Nginx 配置文件并指定证书路径: /www/server/nginx/conf/nas.ganglitm.cn.pem,/www/server/nginx/conf/nas.ganglitm.cn.key

停止当前正在运行的 nginx 实例
sudo /www/server/nginx/sbin/nginx -s stop  # 或者
sudo systemctl stop nginx
重新加载 systemd 配置并启动服务
sudo systemctl daemon-reload
sudo systemctl start nginx
设置自启动
sudo systemctl enable nginx

常见问题排障

  • 无法访问域名:检查 DNS 解析是否正确;A 记录是否指向正确的 ECS 公网 IP。

  • SSL 证书问题:确认证书路径正确,ssl_certificatessl_certificate_key 配置是否正确。

  • 连接超时:检查安全组是否放行相应端口(443、80、5000、5001)。

  • 反向代理无效:确认代理地址与端口是否匹配,NAS 是否正常运行。

— 完 —

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇