LINUX.ORG.RU
решено ФорумAdmin

Переписать конфиг Nginx покрасивее

 


0

2

Логика:
Брать последний кусок URL (после последнего слеша) и подставлять в заголовок апстрим серверу.
Пример:
Запрос http://myserver.ru/action/user/12NZ12984N43490D
Извлекаем 12NZ12984N43490D, подставляем в заголовок.

Есть вот такой кусок конфига.

location ~ ^/action/user/ {
  if ($request_uri ~* "([^\/]+$)" ) {
     set  $user_id  $1;
  }
  proxy_set_header Cookie "USERID=${user_id}";
  ...
  proxy_pass http://backend


Вопрос: можно ли переписать это покрасивее, как минимум if мне не нравится, но весь stackoverflow исписан такими примерами.
Плюс, не могу придумать, как добавлять заголовок, только если ID корректна(16 символов, только цифры и буквы)

★★★★★

Почитайте про map. Его логика акалогична case из разных ЯПов. Умеет вв регулярки, хостнеймы, вайлдкарды и прочие радости жизнт. Вместо if чаще всего используют его.

l0stparadise ★★★★★
()

В итоге упростил до

   location ~ ^/action/user/(.+)$ {
     set $user_id $1;
     proxy_set_header Cookie "USERID=${user_id}";
     ...
     proxy_pass http://backend
     ...

zolden ★★★★★
() автор топика

Плюс, не могу придумать, как добавлять заголовок, только если ID корректна(16 символов, только цифры и буквы)

А если так попробовать?

location ~ ^/action/user/ {
  if ($request_uri ~* "(([a-zA-Z0-9]{16})+$)" ) {
     proxy_set_header Cookie "USERID=$1";
  }
 
  ...
  proxy_pass http://backend

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.