Posted by Rockland Steel on June 9, 2011 at 4:21am
(Setup: Drupal 6.20, Boost 1.18, Nginx 0.7.67)
When the URL of the boosted node contain character → or 中国新闻网新闻中心, the cached node is correctly cached in the cache directory, and correctly reflecting the URL.
But when accessing the node, the uncached node loaded instead.
Below is the Nginx rules I use:
server {
server_name *.com *.net *.org;
location / {
root /var/www/html/$host;
index index.php;
set $boost "";
set $boost_query "_";
if ( $request_method = GET ) {
set $boost G;
}
if ($http_cookie !~ "DRUPAL_UID") {
set $boost "${boost}D";
}
if ($query_string = "") {
set $boost "${boost}Q";
}
if ( -f $document_root/cache/normal/$host$request_uri$boost_query.html ) {
set $boost "${boost}F";
}
if ($boost = GDQF){
rewrite ^.*$ /cache/normal/$host/$request_uri$boost_query.html break;
}
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
break;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$host$fastcgi_script_name;
include fastcgi_params;
}
}
I've tried adding charset utf-8; under http { and under server {. Both of them not works.
Since cached node is correctly created in the cache directory, so this is not Drupal or Boost problem, but the problem is how to make Nginx read that cached file.
Comments
Your configuration
has several stylistic issues that have a performance counterpart.
You're not using
try_files. Instead you're using a mod_rewrite like approach with the file check.I'm not a Boost expert, but I believe that you should instead of using
$request_uriwhich includes the query string andarguments, use
$uri_$args.html.