Прояснилась такая вещь.
Если: keepalive_timeout 0;
Все начитает работать. Если же keepalive_timeout я ставлю 1 или 2 или более файлы начинают грузятся гораздо медленнее. CPU загружено на 1-2%.
free -m total used free shared buffers cachedMem: 122 80 42 0 8 33-/+ buffers/cache: 47 74Swap: 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;?
Можно сделать вот так:
Тоесть, если идет запрос на любой 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