Блог Вячеслава Волкова

Тому, что действительно нужно знать, никто не научит.

— Оскар Уайльд

Тег / nginx

Ошибка «upstream sent too big header» при установке xdebug в symfony 2

После установки xdebug и запуске DEV environment в Symfony 2 можно получить ошибку Bad Gateway. В логах nginx можно найти следующую ошибку:
upstream sent too big header while reading response header from upstream

Для ее исправления необходимо увеличить параметры в конфигурации виртуального хоста Nginx.
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;

В итоге получаем вот такой конфиг:
location ~ ^/(app|app_dev|config)\.php(/|$) {
          fastcgi_buffer_size 32k;
          fastcgi_buffers 4 32k;
          fastcgi_pass    unix:/tmp/site.sock;
          fastcgi_split_path_info ^(.+\.php)(/.*)$;
          include fastcgi_params;
          fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param  HTTPS off;
        }

МастерБанк callback и Nginx с ошибкой 499

Небольшой топик по callback ответу от мастер банка через nginx, который, надеюсь, вам сэкономит время, хотя я убил на это почти час рабочего времени.

Когда происходит ответ от банка, то отправив данные, он не ждет ответа от вашего сервера, а тут же закрывает соединение. По-этому я был очень удивлен, когда в логах nginxа запрос был, а до Apache запрос не доходил.

В access логах Nginx лишь была строчка с 499 ошибкой.
 195.96.164.22 - - [15/Feb/2011:18:05:41 +0300] "POST /callback/masterbank/ HTTP/1.1" 499"

Как оказалось nginx просто закрывал соединение и не отправлял к Apache запрос. Что бы избежать этого необходимо в настройках указанного виртуального хоста или location добавить следующий параметр
 proxy_ignore_client_abort on

После этого запросы до Apache стали доходить без проблем.
По умолчанию данный параметр равен off.

Установка Nginx на CentOS 5

Для многих,  думаю, уже знакомо,  для чего данное приложение необходимо. Кто ещё не знаком, Nginx (engine x) — это легковесный веб-сервер работающий на Unix-подобных операционных системах. Nginx позволяет снизить нагрузку на основные сервера генерации динамического контента за счет быстрой отдачи статического контента клиентам. Поэтому веб-сервер Nginx чаще всего используют как Front-End сервер, а Apache – Back-End сервер. Также Nginx позволяет создать разграничение нагрузки, что очень важно для High-load проектов.

Не буду вдаваться в описание этого веб-сервера, о нем можно найти кучу информации в интернете, а приступлю непосредственно к его установке.

Узнать больше »

Nginx и хост по умолчанию

Если вам необходимо создать хост по умолчанию в nginx, то есть хост, который будет всегда открываться по умолчанию, то можно воспользоваться следующей конструкцией.

Создадим фаил "000-default-host.conf" со следующим содержанием:
server {
    listen       80 default;

    access_log  /var/log/nginx/000-default-host.access.log;

    location / {
        root   /var/www/default-host/;
        index  index.html index.htm;
    }
}

Благодаря использованию listen 80 default будет происходить обращение по умолчанию к данной конфигурации. Например, если у вас сайт http://example.ru и в DNS указано, что все хосты ссылаются на ваш IP, то при обращении на несуществующий у Вас хост http://bugaga.example.ru, будет показываться указанный хост.

Само собой в директории "/var/www/default-host/" должны лежать файлы и данный фаил конфигурации должен быть подключен к общей конфигурации nginx.

p.s. У меня все прописанных хосты лежат в директории "/etc/nginx/sites-enabled/", а подключение их происходит в файле "/etc/nginx/nginx.conf" добавлением следующей строчки "include /etc/nginx/sites-enabled/*.conf;" в разделе http.