Nginx 反向代理+HTTPS
背景
针对 512M 小内存 VPS 场景,通过Nginx 轻量级反向代理结合本地 SSL 证书,实现域名 openlist.liushang.online 访问 127.0.0.1:5244 的 OpenList 服务,全程避免高内存面板工具,保证资源占用极低。
一、前提条件
- 已通过 OpenList 安装脚本完成服务部署,
VPS公网IP:5244可访问。 - 域名解析已配置,
openlist.liushang.online指向 VPS 公网 IP(可通过ping 域名验证)。 - VPS 为 Debian/Ubuntu 系统。
- 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 证书
- 创建证书存储目录:
mkdir -p /etc/nginx/ssl/openlist - 上传证书文件:
通过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/ - 验证证书上传:
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)
九、验证访问
- 浏览器访问:打开浏览器,输入
https://openlist.liushang.online,若地址栏显示锁形图标且加载出 OpenList 页面,说明配置成功。 - 命令行验证(可选):
curl -v https://openlist.liushang.online
若输出中包含 SSL connection using TLSv1.3 且返回页面内容,说明 HTTPS 连接正常。
十、常见问题排查
- Nginx 启动失败:
- 查看错误日志:
tail -f /var/log/nginx/error.log; - 检查证书路径是否正确、私钥权限是否为 600。
- 查看错误日志:
- 证书不受信任:
- 将 CA 提供的中间证书内容追加到
.crt文件:cat 中间证书.pem >> 你的证书.crt; - 验证证书域名是否匹配:
openssl x509 -in 你的证书.crt -noout -subject。
- 将 CA 提供的中间证书内容追加到
- 域名无法访问:
- 验证解析:
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 内存可用
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果