gpt4 book ai didi

缓存 404s - NGINX 还是 Varnish ?

转载 作者:行者123 更新时间:2023-12-03 17:47:02 25 4
gpt4 key购买 nike

我正在寻找一种在Web服务器上长期(几天/几周)缓存404的解决方案。我当前的设置是带有memcached_pa​​ss代理和PHP-FPM的NGINX,以交付未缓存的页面(PHP还将内容写入memcached)。
整个网络上的爬虫似乎都喜欢我的页面,并且每天产生数千个404请求。由于我无法将404响应 header 信息与内容一起缓存在memcached中,因此它们全部都直接命中了PHP,因此memcached_pa​​ss查找始终失败。

如何缓存所有返回404的请求?我正在寻找Nginx的HTTPProxModule吗?还是我应该去找Varnish?

从当前的角度来看,我不希望更改整个设置并希望从nginx中删除memcached_pa​​ss指令。到目前为止,它非常简洁,因为php决定是否可以(应该)将请求缓存在memcached中。必要时刷新缓存也很容易。

我当前的NGINX配置文件:

server {
listen 80;
server_name _;


gzip on;
gzip_http_version 1.0;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

location / {
gzip on;
default_type "text/html; charset=utf-8";
charset utf-8;
add_header Content-Encoding gzip;

if ($request_method = GET)
{
expires max;
set $memcached_key $http_host$request_uri;
memcached_pass 127.0.0.1:11211;
error_page 404 = @fallback;
#error_page 502 = @fallback;
break;
}

root /var/www/html/;
index index.php index.html;

if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
break;
}

}



location @fallback {
internal;
root /var/www/html/;
index index.php index.html;

if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
break;
}


}

location ~ \.php$ {
root /var/www/html/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}


}

Nginx或Varnish的示例配置都很好。

谢谢! :)

最佳答案

关于缓存 404s - NGINX 还是 Varnish ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7767508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com