Если имеется такая конструкция в конфиге
location / {
root
/web1/users/mds_rudn/www/download.mds.rudn.info/htdocs/;
proxy_pass http://127.0.0.1:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-NGX-Request NGX;
proxy_set_header Host $http_host;
index index.html index.htm;
}
И бекенд выдает X-Accel-Redirect - редирект идет снова через proxy_pass
хост? Как этого избежать, т.е. что бы nginx выдавал файл сам по uri
взятому из X-Accel-Redirect с корнем сайта root.
Возможно ли настроить nginx так, чтобы в случае если нет заголовка
Last-Modified в ответе от бакенда, nginx сам подставлял текущее время в
этот заголовок.
--
Zherdev Anatoly.
Изменения в nginx 0.3.12 26.11.2005
*) Безопасность: если nginx был собран с модулем
ngx_http_realip_module, то при использовании директивы "satisfy_any
on" директивы доступа и аутентификации не работали. Модуль
ngx_http_realip_module не собирался и не собирается по умолчанию.
*) Изменение: имя переменной "$time_gmt" изменено на "$time_local".
*) Изменение: директивы proxy_header_buffer_size и
fastcgi_header_buffer_size переименованы соответственно в
proxy_buffer_size и fastcgi_buffer_size.
*) Добавление: модуль ngx_http_memcached_module.
*) Добавление: директива proxy_buffering.
*) Исправление: изменение в работе с accept mutex при использовании
метода rtsig; ошибка появилась в 0.3.0.
*) Исправление: если клиент передал строку "Transfer-Encoding: chunked"
в заголоовке запроса, то nginx теперь выдаёт ошибку 411.
*) Исправление: при наследовании директивы auth_basic с уровня http в
строке "WWW-Authenticate" заголовка ответа выводился realm без
текста "Basic realm".
*) Исправление: если в директиве access_log был явно указан формат
combined, то в лог записывались пустые строки; ошибка появилась в
0.3.8.
*) Исправление: nginx не работал на платформе sparc под любыми OS,
кроме Solaris.
*) Исправление: в директиве if теперь не нужно разделять пробелом
строку в кавычках и закрывающую скобку.
Игорь Сысоев
http://sysoev.ru
Привет всем!
Игорь, я тут придумал такую штучку...
подсчет трафика и вывод его для каждого server {} или location {}.
Идея в том, чтобы ввести переменную, которую можно было бы вставить в
необходимый server {} или location {}, а потом выводить эту статистику
через /nginx_status
Это удобно тем, что позволяет динамически считать и наблюдать трафик от
отдельной директории. Особенно интересно это там, где нет ведения логов: в
картинках и файлах.
И не надо динамически логи парсить.
Что-то типа из формата логов $bytes_sent, только постоянно ссумируется (до
обнуления).
Что-то типа подобного:
location / {
proxy_pass http://111.111.111.111:8000/;
access_log /usr/local/nginx/logs/access_web.log main;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
traffic_count $location[1] "Main directory"
}
location ~*
^.+\.(jpg|jpeg|gif|png|ico|css|swf|zip|rar|doc|xls|exe|pdf|ppt|txt|bmp|js)$
{
root /srv/www/htdocs/web1/html/obs;
access_log off;
expires 30d;
traffic_count $location[2] "Files"
}
location ^~ /swf/ {
valid_referers none server_names *.server.com/;
if ($invalid_referer) {
return 403; }
root /srv/www/htdocs/web/html;
autoindex on;
traffic_count $location[3] "SWF files"
access_log /usr/local/nginx/logs/access_web_swffiles.log
download;
}
Для обнуления можно ввести глобальную переменную с форматом наподобие крона
(минимальный интервал обнуления сделать не минуту, а час)
час день месяц
traffic_count_zero */3 * *
обнуление каждые три часа
В статистике это выгладит примерно так (в байтах):
croesus:~# GET http://your-domain.com/nginx_status
Active connections: 1492
server accepts handled requests
2124355 2124355 8278635
Reading: 6 Writing: 405 Waiting: 1081
Main directory: 111111
Files: 2223334
SWF files: 8888888
Или просто имена переменных выдавать, а там пусть сами разбираются
croesus:~# GET http://your-domain.com/nginx_status
Active connections: 1492
server accepts handled requests
2124355 2124355 8278635
Reading: 6 Writing: 405 Waiting: 1081
location[1]: 111111
location[2]: 2223334
location[3]: 8888888
Еще это интересно там, где одновременно отдается "легкая" графика сайта и
огромные файлы-архивы или видеофайлы, так как они качаются долго и в логи
попадают не равномерно по времени.
Думаю это будет элегантным решением ;)
Что скажете?
Привет.
А реально как-то обойти проблему, мешающую nginx сделать
server {
location / {
auth_basic "dfdf"
...
if ($remote_addr = 1.1.1.1) {
auth_basic off
}
}
}
--
Current music : Nickelback - Photograph
Current mood :
Alexandr [ G100m ] Mikhal`kov
___________________________________________________________
Кey: http://www.livejournal.com/pubkey.bml?user=g100m
Привет всем!
что посоветуете для дополнительного бэкэнда.
nginx стоит как фронтэнд. для динамики работат с апачем через порт 5000.
Хочу все сервере перевести в chroot, но с апачем не пркатит. Слишком много
зависимостей и настроек с confixx.
Поэтому хочу апач оставить только для конфикса (с ограничением по ip), а все
php-проекты чтобы выполнялись на других серверных движках, которые в chroot
поставлю.
Что посоветуете?
чтобы так же просто как с gninx и с такими же возможностями, как
apache+mod_php.
Или может тоже nginx запустить с cgi-php?
Игорь, хочу заметить, что сообщение, которое выдаёт nginx, когда
падает backend даёт дурную славу продукту - люди считают, не вдаваясь
в подробности, что это упал nginx.
Предлагаю писать туда что-то более подробное, например, что nginx
запущен в проксирующем режиме и backend в данный момент недоступен.
Изменения в nginx 0.3.51 30.06.2006
*) Исправление: при некоторых условиях в SSI мог пропадать символы "<";
ошибка появилась в 0.3.50.
Игорь Сысоев
http://sysoev.ru
Hello, All!
Тут наши местные светила, в смысле, веб-разработчики, сетуя на медленную
работу бакенда, носятся с мыслью перевести движок сайта с php+mysql на
java. Я, конечно, сразу покрутил им пальцем у виска, но руководству надо
бы какие-то сравнительные цифры или факты предъявить.
Может есть у кого ссылки на статьи, сравнивающие такие вещи для
использования на web-серверах со средней нагрузкой? Был бы благодарен за
подсказку.
--
Best regards, Andrey Y. Ostanovsky
St. Petersburg