Здравствуйте!
У меня наверное быстро решимая
проблема, но я просто решение вопроса
не вижу.
Работает у меня nginx 1.0.8
--------
nginx: nginx version: nginx/1.0.8
nginx: configure arguments: --with-http_gzip_static_module
--with-openssl=/usr/include --with-http_stub_status_module
--http-proxy-temp-path=/dev/shm/nginx/proxy_temp
--http-fastcgi-temp-path=/dev/shm/nginx/fastcgi_temp
--http-uwsgi-temp-path=/dev/shm/nginx/uwsgi_temp
--http-scgi-temp-path=/dev/shm/nginx/scgi_temp
--http-client-body-temp-path=/dev/shm/nginx/client_body_temp
--http-log-path=/var/log/nginx/access.log
--error-log-path=/var/log/nginx/error.log
--conf-path=/etc/nginx/nginx.conf --user=www-data --group=www-data
--------
и в соответствующем файле у меня стоит
в секции Server:
--------
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
------
всё такие я получаю ошибку 404, когда я на
сервере наберу "GET domain/status"
В чем может состоить проблема?
Спасибо вам большое.
Андрей
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,216178,216178#msg-216178
При включенном keepalive в upstream к FastCGI бекенду на PHP, появляются
ошибки 502, проблему нашли и воспроизводится она таким образом.
РНР скрипт, медленные операции выполняет в фон режиме после вызова функции
fastcgi_finish_request(), тестовый скрипт
<?php
ignore_user_abort();
fastcgi_finish_request();
sleep(10);
?>
конфигурация Nginx
upstream fpm
{
server 127.0.0.1:9000;
keepalive 8;
}
server
{
......
fastcgi_keep_conn on;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_pass fpm;
......
}
Лог ошибки Nginx
[error] 7945#0: *5 upstream sent unexpected FastCGI record: 3 while reading
response header from upstream ...
Лог ошибок PHP-FPM пустой.
В upstreem кеше 8 конектов, ошибка появляется когда Nginx ждет от PHP-FPM
ответа в конекте который ещё не освободился, по моей логике PHP-FPM должен
ответить Nginx когда скрипт завершит работу (sleep(10)) но этого не
происходит и Nginx отдает 502 ошибку, судя по всему PHP-FPM после
освобождения конекта не смог обработать следующий запрос от Nginx в этом
конекте, подозреваю что функции fastcgi_finish_request() не рассчитана на
повторное использования конекта.
Или я что-то делаю не правильно?
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,247596,247596#msg-247596
Здравствуйте!
Проблема такая: после изменения
конфига и reload-a Nginx эти изменения не
работают. Если сделать restart - все
работает.
Проблема появилась с ростом кол-ва
виртуальных хостов (сейчас 520 шт) и
соответствующим ростом размера
конфигов, т.к. раньше все было Ок.
Структура конфигов такая: 1 общий nginx.conf,
в который включаются конфиги
виртуальных хостов: include hosts/*.conf
Соответственно изменения внутри этих
hosts/*.conf не работают если не сделать restart
Nginx.
Версия сейчас 0.8.54, была 0.7.67.
Проявлялось на обоих.
Есть-ли какие-то варианты на что нужно
посмотреть ?
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,179057,179057#msg-179057
Здравствуйте, Nginx-ru.
Подскажите, где почитать как работают вложенные локейшны
(последовательность проверки, как определяется результат) ?
Спасибо.
--
С уважением,
Pavel mailto:pavel2000@ngs.ru
nginx/0.7.65
имеем в логах такого рода ошибки.
sendfile() failed (9: Bad file descriptor) while sending request to
upstream, client: x.x.x.x, server: foo.ru, request: "POST
/edit/19067.php HTTP/1.1", subrequest: "/service/cache.php", upstream:
"http://10.0.1.42:8200/service/cache.php?method=ssi&cacheid=4409", host:
"foo.ru", referrer: "http://foo.ru/edit/19067.php"
к сожалению воспроизвести
неполучилось, но есть предположение,
что перед отправкой суб-запроса
переданный в форме файл уже почищен. в
связи с этим вот такая вот ситуация
складывается.
локейшин, который обрабатывает сси
следующий:
location ^~ /service/ {
default_type text/html;
error_page 404 502 504 = @dynamic;
if ( $request_method = POST ) {
return 404;
}
if ( $arg_cacheid = "" ) {
return 404;
}
set $memcached_key "cache|$arg_cacheid";
memcached_connect_timeout 2;
memcached_read_timeout 5;
memcached_send_timeout 5;
memcached_pass @cache;
}
баг?
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,118976,118976#msg-118976
Приветствую всех.
ситуация следующая: есть сайт на nginx+php-fpm. Назовем его site.com. Есть
два поддомена этого сайта - subdomen1.site.com и subdomen2.site.com. Все они
сидят на одном ip. Конфиги:
- базовый
http {
server {
listen ip:80;
server_name site.comwww.site.com;
access_log /var/log/nginx/site_access.log main;
error_log /var/log/nginx/site_error.log error;
root /home/site/data;
...
}
include subdomen1.conf;
include subdomen2.conf;
}
- первый поддомен
server {
listen ip:80;
server_name subdomen1.site.com;
access_log /var/log/nginx/subdomen1_access.log main;
error_log /var/log/nginx/subdomen1_error.log error;
root /home/subdomen1/data;
...
}
- второй поддомен
server {
listen ip:80;
server_name subdomen2.site.com;
access_log /var/log/nginx/subdomen2_access.log main;
error_log /var/log/nginx/subdomen2_error.log error;
root /home/subdomen2/data;
...
}
Казалось бы все должно быть ОК.
Но. Поведение всей этой конструкции вгоняет в ступор. Обращаемся на site.com
- все ок, обращаемся на subdomen1.site.com - все ок, обращаемся на
subdomen2.site.com - и получаем перенаправление на site.com. Фактически мы
даже не получаем запись в subdomen2_access.log, обращение пишется сразу в
site_access.log. Такое ощущение, что при пробеге по конфигу nginx не видит в
упор запись про subdomen2.
Пробовал ходить на разные порты, т.е. написал вот так
- второй поддомен
server {
listen ip:8080;
server_name subdomen2.site.com;
access_log /var/log/nginx/subdomen2_access.log main;
error_log /var/log/nginx/subdomen2_error.log error;
root /home/subdomen2/data;
...
}
и заходить по адресу subdomen2.site.com:8080 - и чудо случилось, попадаю
куда надо.
Вопрос, а как так может быть? почему в первом случае с одинаковыми портами
nginx не видит запись про subdomen2, а при разных портах все прекрасно?
Понятно что мне нельзя оставлять порт 8080, все должно работать на
стандартном 80. Но оно отказывается.
Заранее всем спасибо за помощь и идеи.
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,238601,238601#msg-238601
2010/03/13 22:19:29 [error] 11592#0: *134452425 connect() to
unix:/tmp/php-fpm.sock failed (11: Resource temporarily unavailable) while
connecting to upstream,
Такой ошибкой завален лог. При этом большая часть запросов уходят на бэкэнд
php-fpm.
Что может быть не так, что подкрутить?
nginx 0.8.34
конфиг php-fpm http://pastie.org/868184
Заранее благодарен за помощь.
Добрый день!
как-то уже писал на эту тему. дошли руки, выкатил патч в продакшен.
идея в том, что отправка заголовка "Connection: keep-alive" в
большинстве случаев не нужна.
абонентская база - сотни тысяч пользователей, сотни миллионов запросов
в месяц. думаю, спустя месяц-два можно будет считать, что все
протестировано во всех возможных ситуациях.
желающие - приглашаются к тестированию.
данное поведение "подсмотрено" у IIS, который по любым метрикам
занимает десятки процентов "рынка":
http://news.netcraft.com/archives/2013/12/06/december-2013-web-server-surve…
- поэтому есть уверенность, что все обойдется без побочных эффектов
diff --git a/src/http/ngx_http_header_filter_module.c
b/src/http/ngx_http_header_filter_module.c
index 707a813..759186f 100644
--- a/src/http/ngx_http_header_filter_module.c
+++ b/src/http/ngx_http_header_filter_module.c
@@ -383,7 +383,10 @@ ngx_http_header_filter(ngx_http_request_t *r)
len += sizeof("Connection: upgrade" CRLF) - 1;
} else if (r->keepalive) {
+
+ if ((r->http_version == NGX_HTTP_VERSION_10) || (clcf->keepalive_header)) {
len += sizeof("Connection: keep-alive" CRLF) - 1;
+ }
/*
* MSIE and Opera ignore the "Keep-Alive: timeout=<N>" header.
@@ -556,8 +559,10 @@ ngx_http_header_filter(ngx_http_request_t *r)
sizeof("Connection: upgrade" CRLF) - 1);
} else if (r->keepalive) {
- b->last = ngx_cpymem(b->last, "Connection: keep-alive" CRLF,
+ if ((r->http_version == NGX_HTTP_VERSION_10) ||
(clcf->keepalive_header)) {
+ b->last = ngx_cpymem(b->last, "Connection: keep-alive" CRLF,
sizeof("Connection: keep-alive" CRLF) - 1);
+ }
if (clcf->keepalive_header) {
b->last = ngx_sprintf(b->last, "Keep-Alive: timeout=%T" CRLF,
Добрый день.
На нашел обсуждение в архиве рассылки на данную тему, решил написать,
кто-нибудь настраивал в nginx домены в зоне РФ. Что нужно указывать в
server_name?