部署RSSHub到VPS指南:借助Cloudflare Origin Rule解决端口冲突

24 年 4 月 11 日 星期四
866 字
5 分钟

AI 摘要

奋力赶来...

这次要借助 Cloudflare Origin Rules 回源任意端口,实现443到任意端口。

现状

  • VPS已经运行了服务 Hysteria 2,它占据了HTTP和HTTPS通信常用的80和443端口。
  • 由于Hysteria 2和Nginx之间不兼容,无法将流量从 Nginx 转发给 Hysteria 2。
  • 在 Cloudflare上启用的SSL/TLS加密模式是“完全(严格)”,这要求必须为RSSHub配置正确的SSL证书。

理想状态

能够让 RSSHub 可以直接通过标准443端口提供服务,避免在域名后追加特定的端口号。

解决方案

  • 方案1:容忍在访问RSSHub时输入繁琐的端口,如“IP
    ”的形式。
  • 方案2:更改Hysteria 2服务的配置,避开标准的HTTP和HTTPS端口,并让Nginx监听这些端口以代理RSSHub的流量。这可能是性能上的最佳选择。
  • 方案3:将Nginx配置为RSSHub的前置代理,并运行在非标准端口,同时利用Cloudflare的Origin Rules功能进行端口重写。

由于我对Cloudflare Origin Rules功能不太熟悉,我决定采用方案3来进行部署尝试。

执行步骤详解

在Cloudflare中的设置

  1. 在Cloudflare DNS管理区,将我需要用到的域名通过A记录解析指向 VPS 的IP地址。
  2. 在Cloudflare的SSL/TLS设置中,生成了长达15年期限的源证书,将证书和私钥分别命名为example.com.pem和example.com.key,并将它们上传到VPS的相关ssl目录中,后面要用到保存的地址。
创建源证书
  1. 在Cloudflare的Origin Rules配置里创建了一项新规则,将域名example.com对应的流量端口重写到Nginx即将监听的端口上,如1234。
创建 Origin Rules 规则

VPS配置过程

  1. 从Cloudflare的Origin CA certificates下载根证书并上传到VPS,或者直接 VPS 上下载,后面会用到保存的位置。
shell
sudo wget -O /etc/ssl/certs/origin_ca_rsa_root.pem https://developers.cloudflare.com/ssl/static/origin_ca_rsa_root.pem
  1. 利用Docker安装RSSHub,指定使用默认的1200端口。
shell
docker run -d —name rsshub -p 1200:1200 diygod/rsshub
  1. 在VPS上安装Nginx,但由于本地80和443端口已被占用,虽然安装成功,Nginx无法启动。
shell
sudo apt update
sudo apt install -y nginx
  1. 在/etc/nginx/conf.d/目录下创建example.com.conf配置文件,修改并填写以下内容;主要的任务是监听1234端口,将接收到的流量转发到RSSHub使用的1200端口,注意修改证书的保存地址。
nginx
server {
   listen 1234 ssl http2;
   server_name example.com;

   # SSL配置部分
   ssl_certificate /etc/ssl/certs/example.com.pem;
   ssl_certificate_key /etc/ssl/private/example.com.key;

   ssl_protocols TLSv1.2 TLSv1.3;
   ssl_ciphers ’EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH‘;
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:10m;
   ssl_session_tickets off;
   ssl_stapling on;
   ssl_stapling_verify on;

   # 引入Cloudflare Origin CA的根证书
   ssl_trusted_certificate /etc/ssl/certs/origin_ca_rsa_root.pem;

   add_header Strict-Transport-Security ”max-age=31536000; includeSubDomains“ always;

   location / {
   # 反向代理设置
   proxy_pass http://localhost:1200;
   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_read_timeout 90;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection ”upgrade“;
   }
}
  1. 修改/etc/nginx/sites-enabled/default文件,将其中的监听端口从80更改为其他未使用的端口,如8080。
  2. 验证Nginx配置无误后启动服务。
shell
nginx -t
sudo systemctl start nginx

测试访问效果

在Web浏览器中输入 https://example.com,顺利看到RSSHub已成功安装并运行的欢迎页面。端口依然是1234,但是完全无需手动输入,直接交由 Cloudflare 处理,巴适得很。

成功安装 RSSHub

反思一下

利用Cloudflare提供的边缘计算服务,可以享受许多免费的便利;然而,依赖于单一服务商可能会带来风险,哪天真的改了服务协议、收费标准,后果很严重。

文章标题:部署RSSHub到VPS指南:借助Cloudflare Origin Rule解决端口冲突

文章作者:Cedar

文章链接:https://some.fylsen.com/posts/guide-deploy-rsshub-vps-port-conflict-ssl-solution  [复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。