Vigar85

Рейтинг
16
Регистрация
09.04.2011

Прояснилась такая вещь.

Если: keepalive_timeout 0;

Все начитает работать. Если же keepalive_timeout я ставлю 1 или 2 или более файлы начинают грузятся гораздо медленнее. CPU загружено на 1-2%.

free -m
total used free shared buffers cached
Mem: 122 80 42 0 8 33
-/+ buffers/cache: 47 74
Swap: 511 0 511

Из за чего это происходит, в чем причина?

Получилось получить лог nginx, он выглядит так:

2012/12/05 06:19:16 [notice] 2751#0: using the "epoll" event method

2012/12/05 06:19:16 [notice] 2751#0: nginx/1.2.3
2012/12/05 06:19:16 [notice] 2751#0: OS: Linux 2.6.31.6_SMP_820
2012/12/05 06:19:16 [notice] 2751#0: getrlimit(RLIMIT_NOFILE): 1024:1024
2012/12/05 06:19:16 [notice] 2752#0: start worker processes
2012/12/05 06:19:16 [notice] 2752#0: start worker process 2753
2012/12/05 06:19:16 [notice] 2752#0: start worker process 2754
2012/12/05 06:19:51 [info] 2753#0: *1 client 192.168.1.103 closed keepalive connection
2012/12/05 06:19:51 [info] 2754#0: *2 client 192.168.1.103 closed keepalive connection
2012/12/05 06:21:56 [info] 2754#0: *3 client timed out (110: Connection timed out) while reading client request line, client: 192.168.1.103, server: 0.0.0.0:9009
2012/12/05 06:21:56 [info] 2753#0: *4 client 192.168.1.103 closed keepalive connection
2012/12/05 06:24:01 [info] 2753#0: *5 client timed out (110: Connection timed out) while reading client request line, client: 192.168.1.103, server: 0.0.0.0:9009

В нем меня смущают эти строчки: 0.0.0.0:9009

9009 - это порт, который я сам изменил, но почему 0.0.0.0 ?

еще раз конфиг:

user http;

worker_processes 2;

## [ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error2.log debug;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;

sendfile on;
keepalive_timeout 65;

gzip on;
gzip_comp_level 3;
gzip_disable "msie6";
gzip_types text/plain application/xml application/x-javascript text/css;

server {
listen 9009;
server_name 192.168.1.101;
root /var/www;

location / {
ssi on;
index index.html;

}
}

}

error.log - пуст.

Увеличение keepalive_timeout тоже не помогло.

Что еще стоит попробовать?

Я не думаю что проблема в конфике nginx, проблема в чем-то другом. Но в чем?

user http;

worker_processes 2;

## [ debug | info | notice | warn | error | crit ]
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;

server_tokens off; # Скрываем версию сервера nginx
sendfile on;
keepalive_timeout 15;


server {
listen 80;
server_name ДОМЕН.РУ;
root /var/www;

location / {
ssi on;
index index.html;
}

}

}

К сожалению так и не получил ответ на свой вопрос. В чем разница между первой и второй коммандой?

Собственно и обратился сюда т.к. там не нашел этого. Или дайте тогда более конкретную ссылку.

Насколько я понял для 301 редиректа с "/?page=test$lang=ru" на "/test/ru", необходимо использовать такую конструкцию:

location / {

if ($args ~* "/?page=[a-z0-9]+&lang=[a-z]+") {
rewrite ^ /$arg_page/$arg_lang? permanent;
}
}
rewrite ^/([a-z0-9]+)/([a-z]+)(/?)+$ /?page=$1&lang=$2 last;

Таким образом зайдя по ссылке "/?page=test$lang=ru" nginx перенаправляет на "/test/ru".

Но открыв страницу "/test/ru". Nginx выдает ошибку "Moved Permanently". Что я не так делаю?

ivan-lev, я ведь писал выше.

Включается для файлов php он таким образом:

location ~ \.php {

fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Ниже этого я хочу разместить такую конструкцию:

location ~ ^/upload/.*\.php$ {


}

Которая: если идет запрос на любой php файл в папку upload то... и вот в серединке этой конструкции я хочу разместить код который php файлы будет не выполнять а выводить как простой текстовый файл, в nginx есть что-то типа: fastcgi off;?

Можно сделать вот так:

	location ~ ^/upload/.*\.php$ {


}

Тоесть, если идет запрос на любой php файл в папку upload то...

Как отключить обработку php?

Или я не в том направление капаю?

По моему ничего необычного здесь нет:

HTTP/1.1 200 OK =>
Server => nginx/1.2.3
Date => Wed, 26 Sep 2012 19:55:36 GMT
Content-Type => text/html
Content-Length => 15333
Last-Modified => Thu, 24 May 2012 19:01:01 GMT
Connection => close
Accept-Ranges => bytes

12
Всего: 19