Здравствуйте! Я изучаю связку Nginx+Memcached+Apache/PHP. nginx.conf у меня стоит по умолчанию, а виртуальный хост имеет такие настройки:
server {
listen 80;
server_name localhost;
root /home/brazzford/nginx-www/;
index index.php;
location / {
# All POST request send to backend
if ($request_method = POST) {
proxy_pass http://localhost:8080;
break;
}
# Enable SSI
ssi on;
default_type text/html;
# Check Memcached
set $memcached_key "site:$request_uri";
memcached_pass localhost:11211;
memcached_buffer_size 100k;
proxy_intercept_errors on;
error_page 404 502 = @process;
}
# Cache miss
location @process
{
proxy_pass http://localhost:8080;
ssi on;
}
# Cache static
location ~* .(gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|html|htm|wml)$ {
root /var/www;
expires 365d;
}
}
У меня есть тестовый PHP скрипт:
<?php
require "memc_connection.inc.php";
$uriString = $_SERVER['REQUEST_URI'];
$key = "site:" . $uriString;
$data =
"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
";
$set_result = $memc->set($key, $data);
if($set_result)
echo "SUCCESS!";
else
echo $memc->getResultMessage();
?>
И всё работает как надо, то есть сначала я от Apache получаю "SUCCESS", а потом от Nginx и Memcached "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa". Но кода я добавляю к переменной $data "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", то от Nginx я получаю такую бессмыслицу "xњгвдL$prЇ–Ґ@cn-т". То есть, проблема начинается после того, как хранимые данные достигают определённого размера. Memcached+Apache работает правильно, значит проблема в Nginx. Может нужно какой-то параметр изменить? Пробовал менять memcached_buffer_size, как видите поставил на 100к, и всё равно не помогает.