配置Nginx 反向代理

Nginx 反代 80/443

🔑 先记住 3 个路径

路径 作用   本教程用到的文件名
/etc/nginx/sites-available/存放“草稿”配置文件trilium
/etc/nginx/sites-enabled/存放“正式启用”的配置软链接指向上面草稿
/etc/ssl/存放证书   

解释:软链接 = 快捷方式,不改文件就能启用。

准备工作:生成 / 下载 Cloudflare Origin CA 证书

登录 Cloudflare → SSL/TLS → 源服务器 → 创建证书

私钥类型:RSA(兼容最好)
主机名填写你自己绑定的域名,例如我的设置是这个:trilium.dpdns.org*.trilium.dpdns.org,有效期选择15年。

点击创建,会生成你的源证书和私钥。

🔑 一定要保存好!一定要保存好!一定要保存好!

⚠️ 私钥下面的页面关闭后就再也不能查看了。

上面的页面关闭后,只有证书还能再次下载查看,如下图。如果私钥没保存,请删除重建。

 

把证书“放”到服务器

运行安装的Xshell 8,连接VPS。

① 进入证书目录

cd /etc/ssl/certs

② 新建证书文件(空文件)

sudo nano trilium.pem

③ 把 Cloudflare Origin CA 证书 内容一次性粘进去

粘贴 → 保存退出:

右键粘贴→Ctrl + O → Enter → Ctrl + X


④ 同样把私钥也放好

cd /etc/ssl/private
sudo nano trilium.key

粘贴 → 保存退出:

右键粘贴→Ctrl + O → Enter → Ctrl + X

⑤ 权限改安全:

sudo chown root:root trilium.key
sudo chmod 600 trilium.key

服务器装 Nginx

✅第 1 步:装 Nginx

sudo apt update && sudo apt install nginx -y

✅第 2 步:新建站点配置

sudo nano /etc/nginx/sites-available/trilium

✅第 3步:粘贴 → 保存退出

右键粘贴→Ctrl + O → Enter → Ctrl + X

🤖注意:要将代码中所有与域名trilium.dpdns.org相关的内容,替换成你自己的,再粘贴进配置里。

# ==========  唯一且仅有一个 80 端口 Server:强制跳 HTTPS  ==========
server {
    listen 80;
    listen [::]:80;
    server_name trilium.dpdns.org;
    return 301 https://trilium.dpdns.org$request_uri;
}

# ==========  HTTPS 主 Server:HTTP + WebSocket 通用  ==========
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name trilium.dpdns.org;

    # ---- 证书 ----
    ssl_certificate     /etc/ssl/certs/trilium.pem;
    ssl_certificate_key /etc/ssl/private/trilium.key;

    # ---- TLS 强化 ----
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # ---- 上传大小 ----
    client_max_body_size 1000M;


    # ---- 通用 location:同时支持普通 HTTP 与 WebSocket(路径 /) ----
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;

        # 核心:允许协议升级
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        # 常规透传头
        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 https;

        # WebSocket 长连优化
        proxy_buffering    off;
        proxy_read_timeout 86400s;
        proxy_send_timeout 86400s;
    }
}

✅ 第 4 步:让 Nginx 加载这个新配置

# 启用站点(建立软链接)

sudo ln -s /etc/nginx/sites-available/trilium /etc/nginx/sites-enabled/

# 检查语法有没有写错

sudo nginx -t

正常会显示:

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

nginx: configuration file /etc/nginx/nginx.conf test is successful

✅ 第 5 步:替换服务器上/etc/nginx路径下的nginx.conf文件

nginx.conf (若附件失效,可自行去nginx.conf配置文件中加入下面这串代码)

为什么要替换这个nginx.conf文件,因为我遇到了一个bug困扰了好几天才从AI那获取最终解决问题的优化。

用Xftp 8可以很方便的替换文件

相较于原版的nginx.conf文件只在http {后增加了以下代码:

http {

	# ① 升级变量映射(WebSocket 需要)★★★ 放在最顶部 ★★★
	map $http_upgrade $connection_upgrade {
	        default upgrade;
	        ''      close;
	}

	##
	# Basic Settings
	##

✅第 6 步:检查服务器上/etc/nginx/sites-enabled路径下的只保留trilium的快捷方式,删除/etc/nginx/sites-enabled路径下nginx可能生成的default文件,防止80端口冲突。

✅第 7 步:重载 Nginx(不停服务)。

sudo systemctl reload nginx

✅ 第 8 步:确认 80 端口已监听

sudo netstat -tlnp | grep :80

 

防火墙 80/443端口放行

✅ 安装保存工具丨出现彩色提示框直接按 ← 左箭头选 YES → 回车(没提示就继续)。

sudo apt install iptables-persistent -y
回车yes同意

✅ 放行 80 端口(IPv4 最前)

sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

✅ 放行 80 端口(IPv6 最前)

sudo ip6tables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

✅ 放行 443 端口(IPv4 最前)

sudo iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT

✅ 放行 443 端口(IPv6 最前)

sudo ip6tables -I INPUT 1 -p tcp --dport 443 -j ACCEPT

✅ 保存规则(重启不失效)

sudo netfilter-persistent save

✅ 【检查是否成功】

sudo iptables -L -n --line-numbers | grep -E 'dpt:80|dpt:443'

只要看到类似,就说明 80 和 443 防火墙已打开

1  ACCEPT  tcp  --  0.0.0.0/0  0.0.0.0/0  tcp dpt:80

2  ACCEPT  tcp  --  0.0.0.0/0  0.0.0.0/0  tcp dpt:443

 

“您的支持是我持续分享的动力”

微信收款码
微信
支付宝收款码
支付宝

目录关闭