如何创建 nginx 规则来复制 wordpress feed url。实际上,我想要两个版本的 feed,一个缓存,一个不缓存,以模拟 AWS Cloudfront 缓存行为。两个 url 都应该正常运行。对于 feed 间服务,将使用非缓存版本。
我尝试了 chatgpt 推荐的几种方法,但对我不起作用。请提供最佳且最可行的方法来实现此目的。
www.example.com/request_uri/feed/复制到www.example.com/request_uri/abc-feed/。
答案1
要创建 Nginx 规则来复制 WordPress feed URL,您可以按照以下步骤操作:
打开您的 Nginx 配置文件。此文件通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/your-site。
将以下代码添加到您的 Nginx 配置文件:
location /feed/ {
proxy_pass http://your-wordpress-site.com/feed/;
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;
}
location /feed-cached/ {
proxy_pass http://your-wordpress-site.com/feed/;
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_cache your_cache_zone;
proxy_cache_key $uri$is_args$args;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
代替http://your-wordpress-site.com/feed/使用您的 WordPress feed 的实际 URL。
将 your_cache_zone 替换为您的缓存区域的名称。如果您尚未定义缓存区域,则可以将其添加到 Nginx 配置文件的 http 块中:
http {
...
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=your_cache_zone:10m inactive=60m;
...
}
保存更改并退出文本编辑器。
测试你的 Nginx 配置是否存在语法错误:
sudo nginx -t
如果没有错误,请重新启动 Nginx 以应用更改:
sudo systemctl restart nginx
现在,你应该能够访问你的 feed 的缓存版本http://your-website.com/feed-cached/而非缓存版本位于http://your-website.com/feed/。