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/
配置说明
根目录和 /image 目录的响应
当用户访问根目录/
或/image
目录时,Nginx 会直接返回一个简单的文本响应 "ok!"。这通常用于测试或健康检查。反向代理到 Notion
对于以/image
开头的 URL,Nginx 会将请求代理到https://www.notion.so
。通过proxy_pass
指令,Nginx 将请求转发到 Notion 的服务器,并将响应返回给客户端。请求头的设置
通过proxy_set_header
指令,Nginx 会设置或修改请求头,以确保代理请求的正确性。例如,Host
头被设置为www.notion.so
,以便 Notion 服务器能够正确处理请求。缓存配置
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 参考文档
Nginx 反向代理配置指南
该文档详细介绍了如何使用 Nginx 配置反向代理,并将 Notion 绑定到自定义域名。NotionNext 官方文档
NotionNext 的官方文档提供了更多关于如何配置和使用该工具的信息。Nginx 缓存配置指南
Nginx 官方文档中关于代理缓存的详细说明,帮助更好地理解和配置缓存策略。