重定向到正确的本地化:Nginx,Apache,memcached和Django
|
我的网站使用URL中的字符串进行了本地化(例如
/DE/certificate
获得德语版本,/US/certificate
获得en-US
,等等。)对于网站上的某些URL,省去了本地化部分的重定向,使其转向最佳猜测(通常为/US/<url>
),而对于其他URL我刚得到一张空白页。
这是Django网站。 Django在Apache上通过mod_python
运行,侦听端口8000。Nginx在端口80上。当有请求进入时,Nginx会检查该页面的memcached,如果它在缓存中,则直接从缓存中提供服务。如果内存缓存未命中,则Nginx将请求代理回Apache。 Django将大多数GET
请求的输出存储到memcached中。该网站的流量非常刺耳,此方法可帮助我们从功率相对较低的服务器中获得最大收益。
如果我跳过Nginx和缓存,并直接在端口8000上向Apache发送请求,则不会出现上述问题。这使我怀疑问题出在Nginx / memcached层。
查看成功请求后的Apache日志,将显示302(针对未本地化的请求)以及针对已校正URL的新请求。观看Nginx的日志中是否有失败的请求会显示200响应,并且显然是空响应。我的直觉是在memcached中存储了一个空页面。有什么方法可以调查memcached中的键以确认这种预感,还是我应该寻找其他信息来调试问题?
这是nginx配置的相关部分:
location / {
if ($request_method = POST) {
proxy_pass http://production;
break;
}
default_type \"text/html; charset=utf-8\";
set $memcached_key \"/key-$uri\";
memcached_pass localhost:11211;
error_page 404 502 = /django;
}
location = /django {
proxy_pass http://production;
break;
}
包括Django缓存中间件对我有帮助吗?我完全按照这篇文章进行设置。
没有找到相关结果
已邀请:
1 个回复
碉罕城爸