LINUX.ORG.RU

nginx fastcgi POST/GET/PUT/DELETE

 


1

2

Можно ли средствами nginx разрулить поступление запроса на один и тот же URL разными методами по разным fastcgi?

Те прописать что при приходе на URL запроса методом POST мы заруливаем сюда, при приходе на этот же URL запроса методом GET туда и тд.

★★★★

Последнее исправление: quest (всего исправлений: 1)
Ответ на: комментарий от znenyegvkby

опа, как все просто) спасибо

quest ★★★★
() автор топика
Ответ на: комментарий от znenyegvkby

Better:

map $request_method $backend {
    default address1:port1;
    POST    address2:port2;
}

server {
# ...
    location / {
        fastcgi_pass $backend;
    }
}

Не проверял, но должно работать.

beastie ★★★★★
()
Ответ на: комментарий от beastie

Действительно, есть же map, туплю.
quest, лучше использоваться вариант beastie.

znenyegvkby
()
Ответ на: комментарий от quest

Эм, break для чего? break идеологически должен прерывать что-то, здесь все же не свитчинг/цикл/etc, а перечисление линейных условий. Опять же все зависит от целей, которые вы преследуете. Поясню на примере кода выше:

location /path  {
  ... // инструкции отрабатывают
  if ($request_method = GET ) {
    ... // инструкции отрабатывают если метод GET
  }
  ... // инструкции отрабатывают
}
Т.е. если вы об этом (что инструкции в location _вне_ блоков if будут отрабатывать), то да, несомненно. Вы можете воспользоваться return для возврата, либо можете перейти в другой, отдельный location по псевдониму. Но, как уже сказали выше, лучше использовать map, а еще лучше от ветвлений по возможности отказываться. Вот, прочтите, пожалуйста, из первоисточника.
https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

znenyegvkby
()
Ответ на: комментарий от znenyegvkby

Спасибо, я к тому что обычно все это выглядит типа:

fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;

fastcgi_buffers 8 8K;
include fastcgi_params;
access_log off;

и тут не видно какой-то конкретной команды уводящей куда-то поток выполнения и не возвращающей его, если поставить return 200 то лично у меня возникает подозрение не сломает ли это вызов fastcgi. вообщем нужно попробовать. Вариант с map хорош, но это то-же пригодится

quest ★★★★
() автор топика
Ответ на: комментарий от quest

К теме http://websocketd.com/

Никому не сдалось это поделие в продакшне. Школота, такая как и ты, пользуется подобными штуками. А нормальные дяди юзают в продакшне сишку.

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

anonymous
()
Ответ на: комментарий от anonymous

ты не поверишь но я 1) не школота 2) писал на сишке websocket демоны 3) вижу потенциал в websocketd как в отдельном инструменте на котором можно обкатать прототипы как минимум

quest ★★★★
() автор топика
Ответ на: комментарий от quest

писал на сишке

Если ты писал на сишке, то должен понимать, что модель форкающихся процессов может быть не поднять-не встать затратной. А чтобы было уж совсем чики-пуки, то можно выкинуть вызовы форка и пайпов ИЛИ сделать как тру-папка по модели fastcgi (один процесс всегда запущен и ничто никуда не форкается).

Увы, ты это все пропустил. Иначе бы понял что можно, а что нельзя сделать с websocketd.

anonymous
()
Ответ на: комментарий от anonymous

ты будешь удивлен но я знаю что такое CGI почему он запускается именно в дорогих процессах а не потоках, а также что такое FastCGI и воркеры на основе тредов в nginx. и по приведенной тобой ссылке я говорю об этом же. по крайней мере websocketd использует epoll, а не select/poll и есть шанс на его развитие в сторону потоков и спешел протокола типа FastCGI ибо это логично

quest ★★★★
() автор топика
Ответ на: комментарий от anonymous

что такое пул потоков я то-же знаю

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