@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
, и установить его, если он не был установлен ранее.
@carlo.***merata
Если вы хотите обработать HTTP аргументы в скрипте Bash без использования FastCGI или других дополнительных инструментов, можно использовать следующий простой способ:
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 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-сервер } |
Теперь вы можете получить HTTP аргументы в скрипте Bash без использования $args и FastCGI.