Ich möchte jedes Mal ein Shell-Skript ausführen, wenn mein Nginx-Server eine HTTP-Anfrage erhält. Irgendwelche einfachen Möglichkeiten, dies zu tun?nginx - Wie wird ein Shell-Skript bei jeder Anfrage ausgeführt?
Antwort
Sie können ein Shell-Skript über den Code Lua
aus der Datei nginx.conf ausführen, um dies zu erreichen. Sie müssen die HttpLuaModule haben, um dies zu tun.
Hier ist ein Beispiel dafür.
location /my-website {
content_by_lua_block {
os.execute("/bin/myShellScript.sh")
}
}
Dies scheint einen Nginx-Fehler zu erzeugen ... '[alert] 6807 # 0: waitpid() fehlgeschlagen (10: Keine Kindprozesse)' - siehe http://serverfault.com/q/432609/86531 – Nick
Es scheint, dass der Standardfehler von 'os.execute()' in das nginx Fehlerprotokoll geht und jede Standardausgabe verworfen wird. Die Funktion 'os.execute()' gibt den Unterprozess-Exitcode zurück, sodass dieses Beispiel eine ganze Zahl ausgeben würde. Etwas, das auf 'io.popen()' basiert, könnte besser funktionieren, um die Standardausgabe des Unterprozesses zu durchlaufen. –
Es gibt auch https://github.com/juce/lua-resty-shell, aber das erfordert einen externen Daemon. –
fand ich die folgenden Informationen im Internet unter dieser Adresse: https://www.ruby-forum.com/topic/2960191
Dies erwartet, dass Sie fcgiwrap auf dem Computer installiert haben. Es ist wirklich so einfach wie:
sudo apt-get install fcgiwrap
Beispielscript (ausführbar sein muss)
#!/bin/sh
# -*- coding: utf-8 -*-
NAME=`"cpuinfo"`
echo "Content-type:text/html\r\n"
echo "<html><head>"
echo "<title>$NAME</title>"
echo '<meta name="description" content="'$NAME'">'
echo '<meta name="keywords" content="'$NAME'">'
echo '<meta http-equiv="Content-type"
content="text/html;charset=UTF-8">'
echo '<meta name="ROBOTS" content="noindex">'
echo "</head><body><pre>"
date
echo "\nuname -a"
uname -a
echo "\ncpuinfo"
cat /proc/cpuinfo
echo "</pre></body></html>"
auch dies als eine Include-Datei verwenden, beschränkt nicht nur Shell Skripte.
Ich fand es sehr hilfreich für das, woran ich arbeite, ich hoffe es hilft Ihnen mit Ihrem RaspberryPI Projekt.
Siehe auch https://www.nginx.com/resources/wiki/start/topics/examples/fcgiwrap/ und https://www.nginx.com/resources/wiki/start/topics/examples/fastcgiexample/ –
- 1. Wird environment.rb bei jeder HTTP-Anfrage aufgerufen?
- 2. document.ready wird nicht bei jeder Ladung ausgeführt
- 3. Neue Sitzung bei jeder Anfrage
- 4. ApplicationUserManager.Create bei jeder Anfrage genannt
- 5. Wie Nginx auf mehreren Ports ausgeführt wird
- 6. Wird die Facebook-Leiste bei jeder Anfrage neu geladen?
- 7. Eine Aktion konfigurieren, die bei jeder Benutzereingabe ausgeführt wird
- 8. WebView - Definieren User-Agent bei jeder Anfrage
- 9. Session.Start bei jeder Anfrage aufgerufen, wenn gefeuert
- 10. Modell automatisch bei jeder Anfrage laden
- 11. PHPUnit: 404 Code bei jeder Anfrage
- 12. Shellskript ausführen, wenn ein neuer Benutzer erstellt wird
- 13. Wie wird ein Konstruktor ausgeführt?
- 14. Kann ich Datenbanken bei jeder Anfrage ändern (Sails.js)
- 15. Anfrage Timeout in Nginx
- 16. Wie wird ein VxWorks Scheduler ausgeführt?
- 17. Wie wird ein Schema mit Emacs ausgeführt?
- 18. Sollen bei jeder Anfrage alle Abhängigkeiten geladen werden?
- 19. Sind Module in nancyfx wirklich bei jeder Anfrage erstellt?
- 20. Asynchrone Shellskript in Cocoa-Applescript?
- 21. Cookie-Header-Wert bei jeder Anfrage in Django ändern
- 22. Log geparste Anfrage mit Nginx
- 23. Wie wird ein kurzer Tastendruck in der gleichen Zeit ausgeführt, wenn ein langer Tastendruck ausgeführt wird?
- 24. Rails: Verbindung bei jeder Anfrage umschalten, aber Verbindungspool behalten
- 25. wisper Hörer automatisch bei jeder Anfrage neu laden
- 26. PHP-Sitzungen erweitern den Cookie-Ablauf bei jeder Anfrage nicht
- 27. ES6-Modulcode wird bei jedem Import ausgeführt
- 28. Wird diese linq-Abfrage bei jeder Iteration der for-each-Schleife ausgeführt?
- 29. Falsche Anfrage 400: nginx/gunicorn
- 30. Wie wird ein PowerShell-Skript ausgeführt?
Was ist das eigentliche Problem, das Sie versuchen, damit zu lösen? Wie Sie es erklärt haben, könnte dies leicht zu weiteren Problemen führen. –
Ich bin auf einem RPi und ich möchte eine der LEDs blinken, wenn mein Server eine Anfrage erhält. –
Welche Backend-Sprache/Framework verwenden Sie? Die meisten Backend-Sprachen sollten es Ihnen ermöglichen, ein Shell-Skript aufzurufen. –