我目前正在使用php5-fpm运行Nginx,我想在我的服务器设置中引入清漆,但我只想将清漆提供给Googlebot和Bingbot的缓存页面,其他任何人都通过缓存。
最好的方法是什么?将varnish作为前端运行或者将nginx作为前端运行并向varnish发送请求?我还需要实际的代码。
非常感谢任何评论
答案 0 :(得分:1)
根据用户代理,您可以识别机器人并让varnish缓存响应。请参阅以下清漆库以获取更多信息https://github.com/varnish/varnish-devicedetect
但是我想知道你为什么要把清漆放在那里,特别是只能处理机器人。为什么不让nginx处理缓存(如果这甚至是一个实用的选项)。
答案 1 :(得分:1)
扩展Marcel的答案,你可以使用NGINX来处理Bots的响应缓存(不需要Varnish):
# Map any user agent not containing the word "bot"
map $http_user_agent $isNotBot {
~*bot "";
default "IAmNotARobot";
}
# Where to store cached files (adjust to your liking)
proxy_cache_path /path/to/bot_cache
levels=1:2
keys_zone=bot_cache:10m
max_size=1g
inactive=30m
use_temp_path=off;
server {
...
location / {
...
# Which cache to use
fastcgi_cache bot_cache;
# key to use for the cached copies (adjust to your needs)
fastcgi_cache_key $host:$server_port:$request_uri;
# Bypass the cache for humans
fastcgi_cache_bypass $isNotBot;
# Don't store/cache copies of requests from humans
fastcgi_no_cache $isNotBot;
# Uses stale cached responses for various upstream errors
# (ignored for humans)
fastcgi_cache_use_stale error timeout updating http_500;
# Disable getting gzipped files from back end
# (only cache un-gzipped responses)
fastcgi_set_header Accept-Encoding "";
# upstream location
fastcgi_pass http://upstream;
...
}
...
}
将fastcgi_
替换为proxy_
,scgi_
或uwsgi_
,具体取决于您使用的代理模块。