重定向到正确的本地化:Nginx、Apache、memcached和Django
我的站点使用URL中的字符串进行本地化(例如,重定向到正确的本地化:Nginx、Apache、memcached和Django,django,localization,memcached,nginx,mod-python,Django,Localization,Memcached,Nginx,Mod Python,我的站点使用URL中的字符串进行本地化(例如,/DE/certificate获取德语版本,/US/certificate获取en-US,等等),对于站点上的一些URL,省略了本地化部分重定向到最佳猜测(通常是/US//code>),但对于其他URL,我只得到一个空白页面 这是一个Django网站。Django正在Apache上运行mod_python,监听端口8000。Nginx位于端口80上。当请求传入时,Nginx会检查memcached中的页面,如果页面在缓存中,则直接从缓存提供服务。如果
/DE/certificate
获取德语版本,/US/certificate
获取en-US
,等等),对于站点上的一些URL,省略了本地化部分重定向到最佳猜测(通常是/US//code>),但对于其他URL,我只得到一个空白页面
这是一个Django网站。Django正在Apache上运行mod_python,监听端口8000。Nginx位于端口80上。当请求传入时,Nginx会检查memcached中的页面,如果页面在缓存中,则直接从缓存提供服务。如果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缓存中间件对我有帮助吗?我的设置非常准确。使用“@django”(两行)而不是“/django”宾果,这正是我需要的。我还需要从位置行中删除“=”(因此它是location@django{
)。如果我知道在哪里查找,请参阅文档中的详细信息: