Hi, all!
Есть проблемы с использованием weight в upstream в целях распределения
нагрузки.
Если вес выставлен одинаковый, то нагрузка распределяется равномерно.
Пример:
upstream test_backend {
server localhost:59040 weight=10000;
server other_server:59040 weight=10000;
}
Если же выставить разный вес, то нагрузка распределяется неравномерно по
времени, каждые десять минут меняется сервер и все. Сужу об этом по графикам
загрузки серверов. 10 минут все запросы идут на один сервер, затем 10 мин. на
другой.
Пример:
upstream test_backend {
server localhost:59040 weight=10000;
server other_server:59040 weight=5000;
}
location / {
expires epoch;
fastcgi_pass test_backend;
fastcgi_upstream_max_fails 0;
fastcgi_next_upstream error timeout invalid_header http_500;
include fastcgi_param.conf;
}
Но обнаружил, что если цель треть нагрузки отправлять на другой сервер, то
такое помогает:
upstream test_backend {
server localhost:59040 weight=10000;
server localhost:59040 weight=10000;
server other_server:59040 weight=10000;
}
# nginx -v
nginx version: nginx/0.3.60
# uname -a
Linux tapo.net 2.6.8-2-386 #1 Tue Aug 16 12:46:35 UTC 2005 i686 GNU/Linux
Здравствуйте, .
Столкнулся с такойже (http://www.lexa.ru/nginx-ru/msg02491.html) проблемой, только наоборот. JPG файлы IE
открывает после редиректа нормально, а вот Опера, Mozilla - открывают
как plaintext.
Патч не помог. В чем может быть проблема?
--
С уважением,
Vitaliy mailto:vitaliy.okulov@gmail.com
Если имеется такая конструкция в конфиге
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 0.5.4 15.12.2006
*) Добавление: директиву perl можно использовать внутри блока
limit_except.
*) Исправление: модуль ngx_http_dav_module требовал строку "Date" в
заголовке запроса для метода DELETE.
*) Исправление: при использовании одного параметра в директиве
dav_access nginx мог сообщить об ошибке в конфигурации.
*) Исправление: при использовании переменной $host мог произойти
segmentation fault; ошибка появилась в 0.4.14.
Игорь Сысоев
http://sysoev.ru
Всем привет!
я тут для одной статьи по django и nginx собрал GeoIP базу.
Использовал всем известные источники с сайта maxmind.com и
ip-to-country.webhosting.info
Удалил дубликаты, вручную проверил свыше тысячи спорных сетей.
В итоге получилась база для nginx, которая покрывает большее пространство
адресов, чем каждая из них по отдельности, с исправленными ошибками.
Делал для себя, а пост получился как производная от этой работы.
http://www.alrond.com/ru/2007/mar/01/start-django-nginx/
Я планирую заменить ngx_http_rewrite_module на ngx_http_script_module.
Одновременно они работать, скорее всего, не будут, но какое-то время
ngx_http_rewrite_module всё ещё будет в дистрибутиве для плавной
миграции.
Сейчас блок if - это своеобразный блок location, внутри которого есть
статическая конфигурация. Из-за этого нельзя сделать следующие вещи:
1) if на уровне сервера:
server {
if (condition) {
limit_rate 1k;
}
потому что статическая конфигурация (частью которой является limit_rate)
будет потеряна при попадании в любой location и никакого limit_rate не будет.
Поэтому используется переменная:
server {
if (condition) {
set $limit_rate 1k;
}
2) несколько последовательных истинных if'ов - проверка if'ов завершается
на первом истинном условии. В данной конфигурации
location / {
if (true) {
A
}
if (true) {
B
}
управление в B никогда не попадёт (вернее, попадёт, если воспользоваться
одним хаком).
Что планируется:
1) синтаксический сахар: вместо
set $var value;
будет
$var = value;
2) поддержка &,|,! в if.
3) else
4) не будет rewrite: вместо
rewrite ^/uri(/.*) $1 last;
будет
if ($uri ~ ^/uri(/.*)) {
$uri = $1;
continue;
}
5) внутри блоков if не будет директив статической конфигурации, а можно
будет использовать только присваивания, несколько директив модуля script
и нескольких специальных директив (например, proxy_pass):
break - прерывает исполнения директив модуля script;
continue - прерывает исполнения директив модуля script и ищет новый
location для изменённого $uri;
redirect - возвращает редирект пользователю.
Вместо
location / {
if (condition) {
rewrite ... break;
proxy_pass http://AAA;
}
proxy_pass http://BBB;
будет что-то вроде
location / {
if (condition) {
$proxy_uri = ...;
proxy_pass http://AAA;
}
proxy_pass http://BBB;
--
Игорь Сысоев
http://sysoev.ru