Create rssforever

This commit is contained in:
Stille 2021-05-26 21:56:40 +08:00
parent 782786d237
commit 1fdaaa8890
11 changed files with 563 additions and 1 deletions

31
.env Normal file
View File

@ -0,0 +1,31 @@
# ----------------------------------- 默认必须修改项目 ----------------------------------- #
# 需修改域名和数据库密码
RSS_DOMAIN=rss.yourdomain.com
RSSHUB_DOMAIN=rsshub.yourdomain.com
POSTGRES_PASSWORD=rssforever.com
# ----------------------------------- 开启 HTTPS 支持 ----------------------------------- #
# HTTP/HTTPS 协议,默认为 http 如需使用 HTTPS 需将值改为 https
PROTOCOL=http
# ----------------------------------- HTTPS 证书和密钥 ---------------------------------- #
# 上传证书文件后,需修改域名证书和密钥的文件名.
# 如果 RSS 和 RSSHUB 使用不同证书,需分别修改以下证书和密钥的文件名.
# 如果 RSS 和 RSSHUB 使用同一泛域名证书,请修改为同一文件名.
# RSS 证书和密钥文件名
RSS_DOAMIN_CERT=yourdomain.com.cer
RSS_DOMAIN_KEY=yourdomain.com.key
# RSSHUB 证书和密钥文件名
RSSHUB_DOAMIN_CERT=yourdomain.com.cer
RSSHUB_DOMAIN_KEY=yourdomain.com.key
# ------------------------------------- 镜像和版本 ------------------------------------- #
# 镜像和版本,请勿修改删除.
NGINX_VERSION=stable
TTRSS_IMAGE=wangqiru/ttrss
TTRSS_VERSION=latest-2021-05-19

BIN
01.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

190
README.md
View File

@ -1 +1,189 @@
# rssforever
# rssforever
## 简介
本项目为 Nginx + TTRSS + RSSHub 整合 docker 容器化快速一键部署方案.
### 前言
[rssforever.com](rssforever.com) 为网友提供免费的 RSS 和 RSSHub 服务已经一年有余,由于服务器压力及个人精力有限等原因已停止提供 RSS 服务.鉴于很多新手用户技术有限,特将 nginx , ttrss , rsshub 三个项目整合到 docker compose 中,实现一键部署使用.
### 特点
1. 本项目针对新手用户,提供整合配置,无需繁琐的设置,即使是新手用户最快也只需要几步操作,几分钟即可部署使用.
2. 使用 docker compose 编排配置,所有命令,配置及环境变量集中管理,方便维护和迁移.
3. 更换服务器也仅需打包备份一个文件夹,迁移解压后一条命令即可恢复使用.
### 环境需求
- 至少 1 核 1G 境外 VPS 服务器 ( 国内服务器由于网络问题,不推荐使用. )
- 拥有自己的域名 ( 自行申请泛域名证书可使用 HTTPS 部署 )
- 服务器未占用 80/443 端口
- 服务器已安装 docker 和 docker compose 环境 ( 未安装可参考下文简易安装指南 )
> 由于此项目为新手向服务,不支持已被其他服务占用 80/443 端口的服务器.请停止相关服务或更换新服务器部署使用.
> 此项目一共会启动 9 个容器,服务器性能不足请不要部署其他应用,并且私有化个人使用.避免服务器压力过大.
> 如果服务器上已有 nginx 等占用 80/443 端口的服务,同时又有部署的需求,请联系我进行付费技术支持.
---
## 部署
docker 及 docker compose 必须提前安装到服务器中,相关教程网上很多,也可逐一执行以下 6 条命令安装启动:
```shell
# 安装 docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl start docker
sudo systemctl enable docker
# 安装 docker compose
curl -L https://github.com/docker/compose/releases/download/1.29.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
```
安装完成并检查
```shell
docker -v
docker-compose -v
```
### 配置域名解析
分别为`RSS`和`RSSHub`两个站点配置两个二级域名,例如`rss.yourdomain.com`和`rsshub.yourdomain.com`.并设置 A 记录或 CNAME 到服务器.
![01](./01.jpg)
### HTTP 部署
#### 拉取代码
```shell
git clone https://github.com/stilleshan/rssforever.git
# 拉取代码
cd rssforever
# 进入目录,注意不要修改目录名,否则会导致 watchtower 无法监控容器自动更新镜像.
```
#### 配置 .env 文件
修改`.env`文件中`RSS`和`RSSHub`的域名以及数据库密码
```shell
RSS_DOMAIN=rss.yourdomain.com
RSSHUB_DOMAIN=rsshub.yourdomain.com
POSTGRES_PASSWORD=rssforever.com
```
#### 启动
```shell
docker-compose up -d
# 再次注意需要在 rssforever 目录下执行
```
#### 完成
访问 http://rss.yourdomain.com 使用`admin`和`password`登陆使用,请及时修改密码.
访问 http://rsshub.yourdomain.com 并参考[官方文档](https://docs.rsshub.app/)使用.
### HTTPS 部署
#### 拉取代码
```shell
git clone https://github.com/stilleshan/rssforever.git
# 拉取代码
cd rssforever
# 进入目录,注意不要修改目录名,否则会导致 watchtower 无法监控自动更新容器.
```
#### 配置 .env 文件
修改`.env`文件中`RSS`和`RSSHub`的域名以及数据库密码
```shell
RSS_DOMAIN=rss.yourdomain.com
RSSHUB_DOMAIN=rsshub.yourdomain.com
POSTGRES_PASSWORD=rssforever.com
```
上传`泛域名`证书和密钥文件至`nginx/ssl`目录下.
并以`yourdomain.com.cer`形式命名,证书后缀`cer`或者`crt`等均不影响使用.
修改`.env`文件中域名证书和密钥文件名
修改`.env`文件中`PROTOCOL=https`
具体参考如下:
```shell
PROTOCOL=https
RSS_DOAMIN_CERT=yourdomain.com.cer
RSS_DOMAIN_KEY=yourdomain.com.key
RSSHUB_DOAMIN_CERT=yourdomain.com.cer
RSSHUB_DOMAIN_KEY=yourdomain.com.key
```
**注意:如果使用单域名证书,请分别将两个域名证书上传至`nginx/ssl`中,分别修改`.env`文件中 RSS 和 RSSHub 域名证书和密钥文件名.**
```shell
# 单域名参考配置
RSS_DOAMIN_CERT=rss.yourdomain.com.cer
RSS_DOMAIN_KEY=rss.yourdomain.com.key
RSSHUB_DOAMIN_CERT=rsshub.yourdomain.com.cer
RSSHUB_DOMAIN_KEY=rsshub.yourdomain.com.key
```
#### 启动
```shell
docker-compose up -d
# 再次注意需要在 rssforever 目录下执行
```
#### 完成
访问 https://rss.yourdomain.com 使用`admin`和`password`登陆使用,请及时修改密码.
访问 https://rsshub.yourdomain.com 并参考[官方文档](https://docs.rsshub.app/)使用.
---
## 进阶
### 强制跳转 HTTPS
如使用`HTTPS`部署,可手动修改`nginx/vhost`目录中的`rss.conf`和`rsshub.conf`第`9`行,将`#`注释符号删除.
```nginx
return 301 https://rss.yourdomain.com$request_uri;
```
重启 docker compose 生效
```shell
# 建议直接停止并在次启动
cd rssforever
# 进入目录
docker-compose down
# 停止
docker-compose up -d
# 启动
```
### 证书更新
本项目目前并未配置自动更新证书的功能,今后视情况加入其中.
泛域名有效期三个月,请自行续签后覆盖原有证书,执行`docker-compose down`停止服务,并在次执行`docker-compose up -d`启动即可.
### 高级配置
TTRSS 和 RSSHub 可以通过修改`docker-compose.yml`设置环境变量来配置高级功能,详情请参考本文末尾项目官方文档进行修改.
值得注意的是本项目的`docker-compose.yml`定制化过多,请慎重修改.
通常来说修改`volumes`和`environment`参数来挂载目录,设置一些高级配置并不会对本服务有影响.如诺出现问题请提交`issue`.
### 备份恢复
#### 备份
本项目采用 docker compose 部署,所有配置及数据都在`rssforever`目录中,方便备份和迁移.
`rss`目录会在项目启动后自动生成,存放`rss`的数据库,不可删除.( 除非希望重新部署 )
`rsshub`目录会在项目启动后自动生成,此目录为缓存数据,迁移时可以删除以免占用过大空间.
**其他所有文件及目录,如不清楚请不要随意修改和删除,否则会导致服务无法启动.**
#### 恢复
将域名 A 记录重新指向新服务器,将备份的`rssforever`目录解压进入启动即可.
```shell
cd rssforever
# 进入目录
docker-compose up -d
# 启动
```
### 初始化
如果误操作修改了相关参数导致无法使用,请备份`rss`目录后,删除整个`rssforever`目录.重新按照上文`git clone`拉取代码,修改`.env`文件,在将`rss`移动至`rssforever`下,执行`docker-compose up -d`重新部署.
---
## 其他
### 感谢
感谢以下大神提供的项目:
- [Awesome TTRSS 官方文档](https://ttrss.henry.wang/)
- [Awesome TTRSS GitHub](https://github.com/HenryQW/Awesome-TTRSS)
- [RSSHub 官方文档](https://docs.rsshub.app/)
- [DIYgod/RSSHub GitHub](https://github.com/DIYgod/RSSHub)
### 链接
- [rssforever.com](https://rssforever.com)
- [RSSHub 公共服务](https://rsshub.rssforever.com)
- [泛域名证书申请相关文章](https://www.ioiox.com/tag/SSL/)
- [新手教程 Nginx + TTRSS + RSSHub 整合 docker 容器化快速一键部署方案](https://www.ioiox.com/archives/133.html)

130
docker-compose.yml Normal file
View File

@ -0,0 +1,130 @@
version: "3"
networks:
rssforever:
#---------------------------------------- nginx ---------------------------------------- #
services:
nginx:
image: nginx:${NGINX_VERSION}
restart: always
ports:
- 80:80
- 443:443
volumes:
- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf/nginx.sh:/nginx.sh
- ./nginx/vhost:/etc/nginx/conf.d/vhost
- ./nginx/ssl:/etc/nginx/ssl
- ./nginx/html:/usr/share/nginx/html
environment:
- RSS_DOMAIN=${RSS_DOMAIN}
- RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT}
- RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY}
- RSSHUB_DOMAIN=${RSSHUB_DOMAIN}
- RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT}
- RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY}
networks:
- rssforever
depends_on:
- service.rss
- rsshub
command: ["sh", "-c", "/nginx.sh"]
#---------------------------------------- ttrss ---------------------------------------- #
service.rss:
image: ${TTRSS_IMAGE}:${TTRSS_VERSION}
environment:
- SELF_URL_PATH=${PROTOCOL}://${RSS_DOMAIN}
- DB_PASS=${POSTGRES_PASSWORD}
- PUID=1000
- PGID=1000
- ENABLE_PLUGINS=auth_internal,remove_iframe_sandbox
networks:
- rssforever
stdin_open: true
tty: true
restart: always
service.mercury:
image: wangqiru/mercury-parser-api:latest
networks:
- rssforever
restart: always
service.opencc:
image: wangqiru/opencc-api-server:latest
environment:
- NODE_ENV=production
networks:
- rssforever
restart: always
database.postgres:
image: postgres:13-alpine
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- ./rss/postgres/data/:/var/lib/postgresql/data
networks:
- rssforever
restart: always
#---------------------------------------- rsshub ---------------------------------------- #
rsshub:
image: diygod/rsshub
restart: always
ports:
- 1200:1200
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: 'redis://redis:6379/'
PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000'
depends_on:
- redis
- browserless
networks:
- rssforever
browserless:
image: browserless/chrome
restart: always
networks:
- rssforever
redis:
image: redis:alpine
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- ./rsshub/redis-data:/data
networks:
- rssforever
#---------------------------------------- watchtower ---------------------------------------- #
# 每天早上 10 点定时更新 RSSHub , 如无需可注释或删除本段.
watchtower:
image: containrrr/watchtower:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_SCHEDULE=0 0 10 * * *
restart: always
command: rssforever_watchtower_1 rssforever_rsshub_1 rssforever_redis_1 rssforever_browserless_1
networks:
- rssforever

33
nginx/conf/nginx.conf Normal file
View File

@ -0,0 +1,33 @@
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/conf.d/vhost/*.conf;
}

4
nginx/conf/nginx.sh Executable file
View File

@ -0,0 +1,4 @@
sed -i -e "/rss.yourdomain.com/s/rss.yourdomain.com/${RSS_DOMAIN}/g" -e "/yourdomain.com.cer/s/yourdomain.com.cer/${RSS_DOAMIN_CERT}/g" -e "/yourdomain.com.key/s/yourdomain.com.key/${RSS_DOMAIN_KEY}/g" /etc/nginx/conf.d/vhost/rss.conf
sed -i -e "/rsshub.yourdomain.com/s/rsshub.yourdomain.com/${RSSHUB_DOMAIN}/g" -e "/yourdomain.com.cer/s/yourdomain.com.cer/${RSSHUB_DOAMIN_CERT}/g" -e "/yourdomain.com.key/s/yourdomain.com.key/${RSSHUB_DOMAIN_KEY}/g" /etc/nginx/conf.d/vhost/rsshub.conf
nginx -s reload
nginx -g 'daemon off;'

11
nginx/html/index.html Normal file
View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
Hello World
</body>
</html>

View File

@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDPDCCAiQCCQCgDNdxnY2O+zANBgkqhkiG9w0BAQsFADBgMQswCQYDVQQGEwJD
TjELMAkGA1UECAwCQkoxCzAJBgNVBAcMAkJKMRwwGgYDVQQKDBNEZWZhdWx0IENv
bXBhbnkgTHRkMRkwFwYDVQQDDBAqLnlvdXJkb21haW4uY29tMB4XDTIxMDUyNTA2
MTEyN1oXDTMxMDUyMzA2MTEyN1owYDELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkJK
MQswCQYDVQQHDAJCSjEcMBoGA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDEZMBcG
A1UEAwwQKi55b3VyZG9tYWluLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAPWLjqI18FYtRbH9z1V/zvkL/TTJQoobUcs7mOYVGQoS+kiyDFkV/xz3
B0UZLTzrgjNgsClsyrYp8iQFAxVu5xkPhwu9HjBaF5F3yMJEbImOtcFC5gT2Ymd1
qLcRTsXmzGC34g/mTbc/9lvdQ2SXBWo8OPxcuguA/WBEykU99olcnHefqOgcdLmN
FRZE5mKmFZuF523GMfYGtRSbS0AKRB4Zom56VOf3wlSwYYqf7fL8/OKIdBujH6U7
j3mIWSO6/Vz2esFMX6zAL+PV0lrpiNpW59PHftreYcB1LVQTLwmxFw1Y6YKs/3Ow
a07H18ZAnbMDmpJ82bm9xmRS/5uvu/MCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA
AG/kegcZhCowJwR5lSe0hCdYXsWQsOlNnVUKcA1y4uPQni/LbpsgnKH8VH3ATAOQ
0aseom71ZhDaxhaTQYGcOeH6y5TlLh/Izx9S9NbxF33JOED6/KnM1uDtZTHc8G9x
R6RNEwts4fSybwixlV6bKp/LoLCbNymcBnmUEZb+rGb3quz2VYjqZjTjGU4YZKmu
7eQynvD1TihxZ0QBX4ByIl7YfYswNGfJDlOzvijZhLhCniKfHZFNsVZArdorM1XH
Dkb5Ec4ycKEINmFc7FxsnwPZxxgx4AiCl1NGOtzN/cPs8tKdPYddBOh9yuV9DWPf
P876ey9hKc5/GrCgT181MA==
-----END CERTIFICATE-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA9YuOojXwVi1Fsf3PVX/O+Qv9NMlCihtRyzuY5hUZChL6SLIM
WRX/HPcHRRktPOuCM2CwKWzKtinyJAUDFW7nGQ+HC70eMFoXkXfIwkRsiY61wULm
BPZiZ3WotxFOxebMYLfiD+ZNtz/2W91DZJcFajw4/Fy6C4D9YETKRT32iVycd5+o
6Bx0uY0VFkTmYqYVm4XnbcYx9ga1FJtLQApEHhmibnpU5/fCVLBhip/t8vz84oh0
G6MfpTuPeYhZI7r9XPZ6wUxfrMAv49XSWumI2lbn08d+2t5hwHUtVBMvCbEXDVjp
gqz/c7BrTsfXxkCdswOaknzZub3GZFL/m6+78wIDAQABAoIBAFnNxcfb1F+gRSo4
+rh5exgo412H8jcSkNK0pFIaC0Nc937Y5505Z0mPq3ABKkNqmv7xcNxltqnzI2U7
FAqlug23WRvY+g6TFKWWWq16WvvgXuck8X2FIy5VoPP7d4T3yW3iMuK/x1KrKQ4m
GXzTox5ckjbyLvUAIysvXY7/f4hyyDxT28edpl797uQrWqtvBS1B3i62LgL6q6VM
/Q3cl3OmFLH8BzpgwHu83dJhFjwq6KPmlMwgBT7IB0Pruk77jRXD7QvUs/Yft45Y
5RJ9CIBRB4CZEW9Hts9EZypWta3s4AMlsm4nN9bu/XL32tlcPTO508LbS0yDa5g8
WqMQ2CECgYEA/PEnzt/IgvMTroXFy9ZzpTGNnG3pn5N65i1Xk5GFG3aMdCgDcyQO
dcUFUht4ElI5TbDSuWduBNkmgulpaNfE5HNwTXBSvHS5NrSe5J0jx1HD6kF4pEx7
n98tgu5KjwbGjWF4jJxstNLM1O5qqVd/Xzj5j7E+GeKmVeMDKAj248MCgYEA+IOC
OKVLSGBVbhqPahvSDVbJjPHzp76CIALYavRy7IVbjj/Kw5P0zawNmloznE0BtTWV
o0Nx78dF6WSLbagKAUXgwpFT3ktaBHOePH60Bsrk6V45V8qkspM5kBKw506wKLbD
Tk0C+Z2Uc6eZdAN3+xKb/F5Vh3XI7R4k82FtNBECgYBlg2tUjV9tnpyhiDKP0itr
eu24gCwozQmf40aohNiE4xkPbRelWC0terrd7wRLZhB1a6fGnQn8jCH2nDKfzyjH
/sRtb8zksXu7xtWWLrKzRc947nm6hq9+xBUB3RyzNibtitbUp9rA33Exa9YGzITj
9HvD/YBM5zeWdJtJr/9V/QKBgGYgBP+qTcmsbO8WUyFT1XpN0/3r4ClrDKaDBNTP
J/sywnEunfDJeKycq+pmbxcoPi9tmdTB/qx+w6gp/XJOv+3N/ZN3jXOom5GAweIy
X2D7OB7+7am6SPxprBoc1D36BEJ2+MPQugxCSaNNmK4oTsIK37dSPOux56Qp4x1x
SCNBAoGAD8a2vEMuaaQM78aXLGgOkmlYRRSwxgmAcrkMC4mZtIbQ+5Cwvjowdgme
/g5NRGf4rGfQ6RKEQFpi4nMChFEc+m8EQcCptwt/cIE5csZn8Xcys/Y9K4S1BkI4
EBE+a9py654NEiFfV/KS5KfA+9syRJKHGLCBVzf7gx0cm2AqGJY=
-----END RSA PRIVATE KEY-----

59
nginx/vhost/rss.conf Normal file
View File

@ -0,0 +1,59 @@
upstream rssforever-rss {
server service.rss;
}
server {
listen 80;
server_name rss.yourdomain.com;
# return 301 https://rss.yourdomain.com$request_uri;
location / {
proxy_redirect off;
proxy_pass http://rssforever-rss;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
server {
listen 443 ssl;
server_name rss.yourdomain.com;
gzip on;
ssl_certificate /etc/nginx/ssl/yourdomain.com.cer;
ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;
location / {
proxy_redirect off;
proxy_pass http://rssforever-rss;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}

59
nginx/vhost/rsshub.conf Normal file
View File

@ -0,0 +1,59 @@
upstream rssforever-rsshub {
server rsshub:1200;
}
server {
listen 80;
server_name rsshub.yourdomain.com;
# return 301 https://rsshub.yourdomain.com$request_uri;
location / {
proxy_redirect off;
proxy_pass http://rssforever-rsshub;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
server {
listen 443 ssl;
server_name rsshub.yourdomain.com;
gzip on;
ssl_certificate /etc/nginx/ssl/yourdomain.com.cer;
ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;
location / {
proxy_redirect off;
proxy_pass http://rssforever-rsshub;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}