Lafiel
November 19, 2023, 7:09pm
1
При сборке пакета в NixOS столкнулся с несколькими проблемами:
Откуда можно скачать исходные файлы для модуля angie-console-light?
Во время тестирования API модуля не учитывается ошибки связи в HTTP Upstreams до сервера, использующий UNIX сокет, в логах ошибка отображается как критическая. Если переключить на HTTP, то при ошибках связи счетчик начинает работать.
VBart
November 21, 2023, 11:57am
3
Добрый день.
Ниже патч, который должен исправить проблему, указанную во 2-ом пункте.
Вскоре выпустим релиз, в который войдет данное исправление.
diff --git a/src/http/ngx_http_upstream_round_robin.c b/src/http/ngx_http_upstream_round_robin.c
--- a/src/http/ngx_http_upstream_round_robin.c
+++ b/src/http/ngx_http_upstream_round_robin.c
@@ -863,13 +863,7 @@ ngx_http_upstream_stat(ngx_peer_connecti
ngx_http_request_t *r;
ngx_http_upstream_t *u;
- c = pc->connection;
-
- if (c == NULL || c->data == NULL) {
- return;
- }
-
- r = c->data;
+ r = pc->ctx;
u = r->upstream;
if (u->upstream == NULL || u->upstream->shm_zone == NULL) {
@@ -898,6 +892,16 @@ ngx_http_upstream_stat(ngx_peer_connecti
}
}
+ c = pc->connection;
+
+ if (c == NULL) {
+ /*
+ * immediate fail of establishing connection
+ * in ngx_event_connect_peer()
+ */
+ return;
+ }
+
if (u->state->status) {
code = u->state->status;
idx = (code >= 100 && code <= 599) ? code - 100 : 500;
diff --git a/src/stream/ngx_stream_upstream_round_robin.c b/src/stream/ngx_stream_upstream_round_robin.c
--- a/src/stream/ngx_stream_upstream_round_robin.c
+++ b/src/stream/ngx_stream_upstream_round_robin.c
@@ -864,13 +864,7 @@ ngx_stream_upstream_stat(ngx_peer_connec
ngx_stream_session_t *s;
ngx_stream_upstream_t *u;
- c = pc->connection;
-
- if (c == NULL || c->data == NULL) {
- return;
- }
-
- s = c->data;
+ s = pc->ctx;
u = s->upstream;
if (u->upstream == NULL || u->upstream->shm_zone == NULL) {
@@ -899,6 +893,16 @@ ngx_stream_upstream_stat(ngx_peer_connec
}
}
+ c = pc->connection;
+
+ if (c == NULL) {
+ /*
+ * immediate fail of establishing connection
+ * in ngx_event_connect_peer()
+ */
+ return;
+ }
+
peer->stats.sent += c->sent;
peer->stats.received += u->received;
}
1 Like
Lafiel
November 21, 2023, 12:46pm
4
Добрый день.
Спасибо, патч работает.
Можно ли предоставить прямую ссылку на коммит с git репозитория?
VBart
November 21, 2023, 2:59pm
5
Спасибо за подтверждение работоспособности.
После того, как пройдет внутреннее ревью - появится в репозитории и дам ссылку.
1 Like
VBart
November 22, 2023, 2:43pm
6
1 Like
Lafiel
November 23, 2023, 4:55am
8
Обратил внимание, что тут версия не верно указана:
1 Like
VBart
November 23, 2023, 7:23am
9
Видимо это ошибка при конвертации репозитория. Мы используем Mercurial, а Git репозиторий - это просто клон, сконвертированный из Mercurial. Похоже скрипт конвертации не справился с обработкой бранча.
В реальности там отдельный 1.3 бранч и на нем версия указана верно: angie: 3a0e4c3c2b36 src/core/angie.h
Lafiel
November 23, 2023, 7:26am
10
Ясно. Мне проще ориентироваться в git репозитории
VBart
November 23, 2023, 7:27am
11
А смотрю в Git тоже всё верно. Просто вы смотрите в main ветку, в которой находится 1.4.0 в разработке. А релиз сделан на багфикс бранче и там тоже версия правильная и в Git-репозитории: angie/angie.h at 850a2fa7b351a539dc51dd558d883dd5d1a88491 - angie - Gitea: Git with a cup of tea
VBart
November 23, 2023, 7:29am
12
Lafiel
November 23, 2023, 7:33am
13
У меня только одна ветка отображается - main, и теги до версии 1.3.1 + nginx до 1.25.3.
Либо я сам запутался в ветках)
Вроде разобрался
Lafiel
November 23, 2023, 12:08pm
14
Обновил версию до 1.3.2 PR в NixOS.
1 Like
Lafiel
December 19, 2023, 1:34pm
15
Готово!
Теперь Angie можно использовать и в NixOS. Для этого надо прописать так:
services.nginx.package = pkgs.angie
или
services.nginx.package = pkgs.angieQuic
для работы с протоколом HTTP/3.
По умолчанию исполняемый файл переименован в bin/nginx
для совместимости. Имеется символическая ссылка на bin/angie
.
Lafiel
December 28, 2023, 11:31am
16
Планируется ли добавление ОС NixOS в список поддерживаемых систем? Или для этого лучше подойдёт раздел, поддерживаемый сообществом?
lonerr
December 28, 2023, 8:37pm
17
Пока такого в планах не было.
Будем решать по мере поступления запросов от пользователей.
1 Like
Простите,
Я учусь на nix. Я пропустил поддержку angie, я использовал angie на arch linux.
Подскажите, пожалуйста, где я совершаю ошибку. Приведенной выше процедуры оказалось недостаточно.
Спасибо
error: attribute ‘angie’ missing
at /barbaros/nix/packages/nginx.nix:6:28:
5|
6| services.nginx.package = pkgs.angie;
| ^
7|
Lafiel
February 17, 2024, 6:59am
19
Вы какой канал используете?
nix-channel --list