背景

针对 512M 小内存 VPS 场景,通过Nginx 轻量级反向代理结合本地 SSL 证书,实现域名 openlist.liushang.online 访问 127.0.0.1:5244 的 OpenList 服务,全程避免高内存面板工具,保证资源占用极低。

一、前提条件

  1. 已通过 OpenList 安装脚本完成服务部署,VPS公网IP:5244 可访问。
  2. 域名解析已配置,openlist.liushang.online 指向 VPS 公网 IP(可通过 ping 域名 验证)。
  3. VPS 为 Debian/Ubuntu 系统。
  4. VPS 已安装基础工具:apt update && apt install wget curl vim -y

二、核心思路

利用 Nginx(内存占用≈2-5M)作为反向代理,将域名的 80/443 端口请求转发到 127.0.0.1:5244;同时配置本地 SSL 证书实现 HTTPS 访问,并将 HTTP 请求自动重定向到 HTTPS。

三、安装 Nginx

Nginx 是轻量级反向代理工具,512M 内存完全无压力,执行以下命令安装:

# 更新软件源并安装Nginx
apt update && apt install nginx -y

# 查看Nginx状态,确认安装成功(显示active running即正常)
systemctl status nginx

四、上传 SSL 证书

  1. 创建证书存储目录
    mkdir -p /etc/nginx/ssl/openlist
    
  2. 上传证书文件
    通过 scp 工具(本地 Mac/Linux)或 Tabby 的 SFTP 功能将本地的证书文件(.crt 公钥、.key 私钥)上传到 /etc/nginx/ssl/openlist 目录。
    本地终端执行示例(替换为实际路径和 VPS 信息):
    scp /本地证书路径/xxx_openlist.liushang.online_server.crt root@VPS公网IP:/etc/nginx/ssl/openlist/
    scp /本地证书路径/xxx_openlist.liushang.online_server.key root@VPS公网IP:/etc/nginx/ssl/openlist/
    
  3. 验证证书上传
ls /etc/nginx/ssl/openlist

若显示 .crt.key 文件,说明上传成功。

五、配置 Nginx 反向代理+HTTPS

1. 创建虚拟主机配置文件

vim /etc/nginx/sites-available/openlist

2. 写入配置内容

将以下内容粘贴到文件中(重点替换证书文件名为实际上传的文件名):

# 1. HTTP端口(80):自动跳转到HTTPS
server {
    listen 80;
    server_name openlist.liushang.online;
    # 永久重定向到HTTPS
    return 301 https://$host$request_uri;
}

# 2. HTTPS端口(443):配置证书+反向代理
server {
    listen 443 ssl http2;
    server_name openlist.liushang.online;

    # 配置SSL证书路径(替换为实际的证书文件名)
    ssl_certificate /etc/nginx/ssl/openlist/xxx_openlist.liushang.online_server.crt;
    ssl_certificate_key /etc/nginx/ssl/openlist/xxx_openlist.liushang.online_server.key;

    # SSL安全优化(可选,提升安全性)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;

    # 反向代理到OpenList的5244端口
    location / {
        proxy_pass http://127.0.0.1:5244;
        # 传递客户端真实IP和请求头
        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_connect_timeout 30s;
        proxy_send_timeout 30s;
        proxy_read_timeout 30s;
    }
}

3. 保存退出

Esc 键,输入 :wq 回车保存。

六、启用配置并设置权限

1. 启用虚拟主机配置

ln -s /etc/nginx/sites-available/openlist /etc/nginx/sites-enabled/

2. 修改证书私钥权限(关键)

Nginx 要求私钥文件权限为 600(仅 root 可读),否则无法加载证书:

chmod 600 /etc/nginx/ssl/openlist/xxx_openlist.liushang.online_server.key
# 确保证书目录有读取权限
chmod 755 /etc/nginx/ssl/openlist

3. 验证 Nginx 配置语法

nginx -t

若输出以下内容,说明配置无语法错误:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

七、重启 Nginx 并设置开机自启

# 重启Nginx使配置生效
systemctl restart nginx

# 设置开机自启,避免VPS重启后服务失效
systemctl enable nginx

# 查看Nginx状态,确认运行正常
systemctl status nginx

若显示 Active: active (running),说明 Nginx 服务正常。

八、放行端口(防火墙+VPS 安全组)

1. VPS 防火墙放行 80/443 端口

# 放行80(HTTP)和443(HTTPS)端口
ufw allow 80/tcp
ufw allow 443/tcp
# 重新加载防火墙规则
ufw reload

2. 安全组放行端口

登录华为云控制台,找到 VPS 对应的安全组,添加入站规则(5244 确保已放行,此为前提条件):

  • 协议:TCP
  • 端口范围:80、443(分别添加或合并为 80/443)
  • 源地址:0.0.0.0/0(允许所有 IP 访问,若仅自用可填本地 IP)

九、验证访问

  1. 浏览器访问:打开浏览器,输入 https://openlist.liushang.online,若地址栏显示锁形图标且加载出 OpenList 页面,说明配置成功。
  2. 命令行验证(可选):
curl -v https://openlist.liushang.online

若输出中包含 SSL connection using TLSv1.3 且返回页面内容,说明 HTTPS 连接正常。

十、常见问题排查

  1. Nginx 启动失败
    • 查看错误日志:tail -f /var/log/nginx/error.log
    • 检查证书路径是否正确、私钥权限是否为 600。
  2. 证书不受信任
    • 将 CA 提供的中间证书内容追加到 .crt 文件:cat 中间证书.pem >> 你的证书.crt
    • 验证证书域名是否匹配:openssl x509 -in 你的证书.crt -noout -subject
  3. 域名无法访问
    • 验证解析:ping openlist.liushang.online,确认指向 VPS 公网 IP;
    • 检查端口占用:netstat -tulpn | grep 443,确保 443 端口仅被 Nginx 占用。

查看内存占用

root@iZ:/etc/nginx/ssl/openlist# free -h
    total  used  free  shared buff/cache   available
Mem:407Mi  223Mi 9.3Mi 2.6Mi  196Mi        183Mi
Swap:  0B    0B    0B                      

可以看到,还剩 183Mebibyte 内存可用