Size: a a a

2020 January 17

a

avekrivoy in nginx_ru
Пытаюсь заставить openresty проксировать в Grafana нужный мне query argument. Никак не могу заставить это работать. В логе вижу, что рерайт срабатывает только для некоторых запросов. Кто-то сталивался с таким? Как решить?


 location / {
  rewrite_by_lua_block {
    query_string, err = ngx.req.get_uri_args()

    if not err == nil then
      ngx.log(ngx.ERR, err)
    end


    query_string["var-user_group"] = "DEMO"
    ngx.req.set_uri_args(query_string)
  }
  proxy_pass http://127.0.0.1:3000;
  proxy_set_header Host $host;
 }
}
источник

AN

Anton Noginov in nginx_ru
А зачем для этого Lua?
источник

a

avekrivoy in nginx_ru
Anton Noginov
А зачем для этого Lua?
нужна будет для авторизации через ldap и получения AD группы пользователя. не важно в данном случае
источник

AN

Anton Noginov in nginx_ru
Хм.
Ну ок.
Я, правда, не понимаю, что мешает авторизовываться об ад нативно, ну да ладно

Для добавления аругумента к запросу-то луа зачем?
источник

a

avekrivoy in nginx_ru
нужен query arg в формате var-arg_name. Т.к nginx не очень дружит с дефисами, сделал на луа
источник

Я

Ярослав in nginx_ru
Всем привет!
Господа, не подскажите такой момент, запускаю на одном из серверов nginx в docker-контенере.
Nginx выдает:
bind() to 0.0.0.0:80 failed (98: Address already in use)
bind() to 0.0.0.0:443 failed (98: Address already in use)

netstat показывает, что сам nginx и занял эти порты. Никто не сталкивался с такой проблемой? Если nginx остановить, то netstat показывает, что порт само собой не занят. Перезапуск не помогает.
источник

a

avekrivoy in nginx_ru
Anton Noginov
Хм.
Ну ок.
Я, правда, не понимаю, что мешает авторизовываться об ад нативно, ну да ладно

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

a

avekrivoy in nginx_ru
вот что в логе. url c query arg в данном случае в заголовке referrer
10.128.144.132 - - [17/Jan/2020:19:03:29 +0100] "GET /public/build/default~DashboardPage~SoloPanelPage~explore.d9f582b9b538bf193c78.js HTTP/1.1" 200 11044 "https://my.grafana.site/?var-user_group=DEMO" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
источник

r🧬

rmshell 🧬 in nginx_ru
Ярослав
Всем привет!
Господа, не подскажите такой момент, запускаю на одном из серверов nginx в docker-контенере.
Nginx выдает:
bind() to 0.0.0.0:80 failed (98: Address already in use)
bind() to 0.0.0.0:443 failed (98: Address already in use)

netstat показывает, что сам nginx и занял эти порты. Никто не сталкивался с такой проблемой? Если nginx остановить, то netstat показывает, что порт само собой не занят. Перезапуск не помогает.
источник

Я

Ярослав in nginx_ru
Попробую там тоже спросить. Спасибо
источник

AN

Anton Noginov in nginx_ru
Ну так и?
Добавилось же?

А то, что графана возвращает ссылки без аргумента - ну так а почему она должна его дописывать?

И - если я правильно понимаю, в лог пишется исходный uri, а не тот, который уходит в прокси
источник

MD

M Dan in nginx_ru
Ярослав
Всем привет!
Господа, не подскажите такой момент, запускаю на одном из серверов nginx в docker-контенере.
Nginx выдает:
bind() to 0.0.0.0:80 failed (98: Address already in use)
bind() to 0.0.0.0:443 failed (98: Address already in use)

netstat показывает, что сам nginx и занял эти порты. Никто не сталкивался с такой проблемой? Если nginx остановить, то netstat показывает, что порт само собой не занят. Перезапуск не помогает.
Внезапно прищапуске контейнера уже запускается нгинкс
источник

AN

Anton Noginov in nginx_ru
M Dan
Внезапно прищапуске контейнера уже запускается нгинкс
Шок! Сенсация!
источник

a

avekrivoy in nginx_ru
Anton Noginov
Ну так и?
Добавилось же?

А то, что графана возвращает ссылки без аргумента - ну так а почему она должна его дописывать?

И - если я правильно понимаю, в лог пишется исходный uri, а не тот, который уходит в прокси
нет, урл в логе как раз преобразованный, я проверял.
в общем, что мне нужно: просто передавать переменную по умолчанию для дашборда.

чтобы при переходе по
https://my.grafana.site/d/LZkN3EPWk/user-per-database-metrics?orgId=1 урл преобразовывался в
https://my.grafana.site/d/LZkN3EPWk/user-per-database-metrics?orgId=1&var-user_group=DEMO
источник

AN

Anton Noginov in nginx_ru
Добавляйте в proxy_pass, штатным образом. Даже в доке пример есть

С телефона мне ссылку искать неудобно.
источник

MD

M Dan in nginx_ru
Anton Noginov
Шок! Сенсация!
я просто забыл написать это заглавными буквами чтобы это выглядело как саркщам
источник

a

avekrivoy in nginx_ru
Anton Noginov
Добавляйте в proxy_pass, штатным образом. Даже в доке пример есть

С телефона мне ссылку искать неудобно.
это уже работает через Lua. Но не для всех урлов. Пытаюсь понять почему и как исправить:

Спроксировал запросы на 3001, запросил url
https://my.grafana.site/d/LZkN3EPWk/user-per-database-metrics?orgId=1

[myserver]# nc -l 3001
GET /d/LZkN3EPWk/user-per-database-metrics?orgId=1&var-user_group=DEMO HTTP/1.1
Host: my.grafana.site
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: uk-UA,uk;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
DNT: 1
Cookie: grafana_session=4f73c04b9e21510081a8ac1e47ba9672
Upgrade-Insecure-Requests: 1
источник

a

avekrivoy in nginx_ru
это для наглядности
источник

AN

Anton Noginov in nginx_ru
Если работает - в чем проблема?
Если не для всех урлов - то не работает, наверное?

Если вдруг надо шашечки, а не ехать - вставьте ngx.log и смотрите, все ли запросы проваливаются в луа.
источник

a

avekrivoy in nginx_ru
Anton Noginov
Добавляйте в proxy_pass, штатным образом. Даже в доке пример есть

С телефона мне ссылку искать неудобно.
О каком способе речь? если это перезапись параметра args_param_name, то аргумент с дефисом туда просто так не вставишь. получится args_var-param_name и configtest error.
источник