Как вывести http аргументы в bash скрипт на nginx?

Пользователь

от carlo.cummerata , в категории: Другие , год назад

Как вывести http аргументы в bash скрипт на nginx?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от roma , год назад

@carlo.***merata 

В bash-скрипте на Nginx можно получить все HTTP аргументы, переданные в URL, используя переменную $args.


Вот пример скрипта:

1
2
3
4
5
6
7
8
9
#!/bin/bash

echo "Content-type: text/html"
echo ""

echo "<h1>HTTP аргументы:</h1>"
echo "<ul>"
echo "<li>$args</li>"
echo "</ul>"


Сохраните этот скрипт, например, как http_args.sh, и выполните следующие команды в терминале, чтобы сделать его исполняемым:

1
chmod +x http_args.sh


Далее добавьте следующую конфигурацию в файле nginx.conf, чтобы обрабатывать запросы, направленные к вашему bash-скрипту:

1
2
3
4
5
location /http_args {
    fastcgi_pass unix:/var/run/fcgiwrap.socket;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /путь_к_вашему_скрипту/http_args.sh;
}


После внесения изменений в nginx.conf перезапустите Nginx.


Теперь, если вы откроете URL вида http://ваш_хост/http_args?arg1=value1&arg2=value2, то вы увидите вывод скрипта в браузере:

1
2
3
HTTP аргументы:
- arg1=value1
- arg2=value2


Обратите внимание, что в этом примере используется fcgiwrap для обработки FastCGI запросов. Вы можете настроить его, используя дополнительные инструкции в nginx.conf, и установить его, если он не был установлен ранее.

Пользователь

от laney_johnson , 5 месяцев назад

@carlo.***merata 

Если вы хотите обработать HTTP аргументы в скрипте Bash без использования FastCGI или других дополнительных инструментов, можно использовать следующий простой способ:

  1. Ваш скрипт Bash, например, http_args.sh, может выглядеть так:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash

echo "Content-type: text/html"
echo ""

echo "<h1>HTTP аргументы:</h1>"
echo "<ul>"
while IFS='=' read -r key value; do
    echo "<li>$key=$value</li>"
done <<< "$QUERY_STRING"
echo "</ul>"


  1. В конфигурации Nginx добавьте следующие строки:
1
2
3
4
5
6
location /http_args {
    alias /путь_к_вашему_скрипту/http_args.sh;
    fastcgi_param QUERY_STRING $query_string;
    include fastcgi_params;
    fastcgi_pass unix:/var/run/fcgiwrap.socket; # или другой FastCGI-сервер
}


  1. Позволяет передавать HTTP аргументы на ваш скрипт по адресу http://ваш_хост/http_args?arg1=value1&arg2=value2.
  2. Перезапустите Nginx, чтобы изменения в конфигурации вступили в силу.


Теперь вы можете получить HTTP аргументы в скрипте Bash без использования $args и FastCGI.