Проблема при получении данных определённой длины от Nginx + Memcached
Brazzford
nginx-forum at nginx.us
Mon May 26 13:47:08 UTC 2014
Здравствуйте! Я изучаю связку 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к, и всё равно не помогает.
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,250372,250372#msg-250372
Подробная информация о списке рассылки nginx-ru