星辰
星辰
Published on 2024-01-24 / 12 Visits
0
0

Notion Next 图片资源加速访问

1 配置 Nginx

1.1 配置准备

在开始配置 Nginx 之前,首先需要确保域名 notion.astralor.com 已经正确解析到反向代理服务器上。这通常需要在域名管理面板中设置 DNS 记录,将域名指向服务器的 IP 地址。解析完成后,需要在 Nginx 配置文件中创建一个新的服务器块(server block),用于处理该域名的请求。

以下是一个基本的 Nginx 服务器块配置示例:

server
{
    listen 80;  # 监听 HTTP 请求
    listen 443 ssl http2;  # 监听 HTTPS 请求,并启用 HTTP/2
    server_name notion.astralor.com;  # 指定服务器名称
    ...
    ...
}

在这个配置中,listen 指令用于指定 Nginx 监听的端口,server_name 指令用于指定该服务器块处理的域名。可以根据需要添加 SSL 证书配置,以启用 HTTPS。

1.2 反代设置

反向代理的配置是 Nginx 的核心部分,它允许将客户端的请求转发到另一个服务器(如 Notion 的服务器),并将响应返回给客户端。以下是详细的 Nginx 反向代理配置:

# 当访问根目录时,直接返回 "ok!"
location = / {
    default_type text/plain;
    return 200 'ok!';
}

# 当访问 /image 目录时,直接返回 "ok!"
location = /image {
    default_type text/plain;
    return 200 'ok!';
}

# 以下为反向代理配置
# PROXY-START/
location ^~ /image
{
    proxy_pass https://www.notion.so;  # 将请求代理到 Notion 的服务器
    proxy_set_header Host www.notion.so;  # 设置代理请求的 Host 头
    proxy_set_header Referer https://www.notion.so;  # 设置 Referer 头
    proxy_set_header User-Agent $http_user_agent;  # 传递客户端的 User-Agent
    proxy_set_header X-Real-IP $remote_addr;  # 传递客户端的真实 IP 地址
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 传递客户端的原始 IP 地址
    proxy_set_header Accept-Encoding "";  # 禁用压缩编码
    proxy_set_header Accept-Language $http_accept_language;  # 传递客户端的语言偏好
    
    proxy_ssl_server_name on;  # 启用 SSL 服务器名称指示

    add_header X-Cache $upstream_cache_status;  # 添加缓存状态头

    # 设置 Nginx 缓存
    proxy_ignore_headers Set-Cookie Cache-Control expires;  # 忽略某些响应头
    proxy_cache cache_one;  # 使用名为 cache_one 的缓存区域
    proxy_cache_key $host$uri$is_args$args;  # 设置缓存键
    proxy_cache_valid 200 304 301 302 600m;  # 设置缓存有效期
}

#PROXY-END/

配置说明

  1. 根目录和 /image 目录的响应
    当用户访问根目录 //image 目录时,Nginx 会直接返回一个简单的文本响应 "ok!"。这通常用于测试或健康检查。

  2. 反向代理到 Notion
    对于以 /image 开头的 URL,Nginx 会将请求代理到 https://www.notion.so。通过 proxy_pass 指令,Nginx 将请求转发到 Notion 的服务器,并将响应返回给客户端。

  3. 请求头的设置
    通过 proxy_set_header 指令,Nginx 会设置或修改请求头,以确保代理请求的正确性。例如,Host 头被设置为 www.notion.so,以便 Notion 服务器能够正确处理请求。

  4. 缓存配置
    Nginx 会缓存来自 Notion 的响应,以减少重复请求的响应时间。缓存的有效期设置为 10 小时(600 分钟),并且会忽略某些可能影响缓存的响应头(如 Set-Cookie)。

2 配置 NotionNext

2.1 配置 NotionNext 使用反代

NotionNext 是一个基于 Notion 的静态网站生成器。为了让 NotionNext 使用配置的反向代理,需要设置一个环境变量 NEXT_PUBLIC_NOTION_HOST,并将其值设置为反向代理域名 https://notion.astralor.com

环境变量配置

NEXT_PUBLIC_NOTION_HOST=https://notion.astralor.com

该环境变量的作用是告诉 NotionNext 使用指定的域名作为 Notion 的反向代理,而不是直接访问 Notion 的官方域名。这样,可以通过自定义域名访问 Notion 内容,同时享受反向代理带来的性能和安全优势。

3 参考文档

  1. Nginx 反向代理配置指南
    该文档详细介绍了如何使用 Nginx 配置反向代理,并将 Notion 绑定到自定义域名。

  2. NotionNext 官方文档
    NotionNext 的官方文档提供了更多关于如何配置和使用该工具的信息。

  3. Nginx 缓存配置指南
    Nginx 官方文档中关于代理缓存的详细说明,帮助更好地理解和配置缓存策略。


Comment