#fastcgi — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #fastcgi, aggregated by home.social.
-
[Перевод] FastCGI исполнилось 30 лет, и он до сих пор лучше HTTP для прокси-к-бэкенду
Знаете, кому 29 апреля стукнуло 30 лет? Спецификации FastCGI. Тридцать лет с 1996 года. Погодите. Эта заметка не про ностальгию по .fcgi -скриптам, которые на каждый запрос форкали отдельный процесс и которыми сегодня никто не пользуется. И не про CGI вообще. Разговор о другом. У нас всех в проде между прокси и бэкендом обычно стоит HTTP. nginx перед Go-приложением, Caddy перед Python-сервисом, Apache перед PHP-FPM, неважно, поверх там HTTP/1.1 или HTTP/2. И вот Эндрю Айер на agwa.name к юбилею FastCGI собрал аргументы, что этот участок инфраструктуры всё это время сидит на не самом удачном протоколе. Айер основатель SSLMate, и в SSLMate всё крутится на FastCGI в проде уже больше десяти лет. Так что пишет не теоретически. Заметка короткая и по делу. HN-тред собрал сотню комментариев , для 2026 года это не топ, но там пишут люди, которые знают, о чём говорят. Если попроще, аргумент такой: у HTTP как протокола между прокси и бэкендом есть два структурных бага, которых у FastCGI нет, и индустрия за тридцать лет так и не нашла повода переехать. А обсуждение в треде ушло дальше: почему вообще HTTP победил, если он хуже технически. И ответ оказался любопытнее самого аргумента.
https://habr.com/ru/articles/1030882/
#fastcgi #http #reverseproxy #request_smuggling #desync #nginx #webинфраструктура #прокси
-
FastCGI: 30 Years Old and Still the Better Protocol for Reverse Proxies by @agwa
How to avoid getting pwned by request smuggling and untrusted headers.
https://www.agwa.name/blog/post/fastcgi_is_the_better_protocol_for_reverse_proxies
-
FastCGI: 30 Years Old and Still the Better Protocol for Reverse Proxies by @agwa
How to avoid getting pwned by request smuggling and untrusted headers.
https://www.agwa.name/blog/post/fastcgi_is_the_better_protocol_for_reverse_proxies
-
FastCGI: because nothing says "cutting-edge technology" like a dusty, 30-year-old protocol that's totally not stuck in the past. 😂 Apparently, the solution to modern reverse proxy issues is to drag out the old relics and pray they work better than your grandpa's broken record player. 🎶🔄
https://www.agwa.name/blog/post/fastcgi_is_the_better_protocol_for_reverse_proxies #FastCGI #outdated #technology #reverseproxy #techhumor #HackerNews #ngated -
FastCGI: because nothing says "cutting-edge technology" like a dusty, 30-year-old protocol that's totally not stuck in the past. 😂 Apparently, the solution to modern reverse proxy issues is to drag out the old relics and pray they work better than your grandpa's broken record player. 🎶🔄
https://www.agwa.name/blog/post/fastcgi_is_the_better_protocol_for_reverse_proxies #FastCGI #outdated #technology #reverseproxy #techhumor #HackerNews #ngated -
FastCGI: 30 Years Old and Still the Better Protocol for Reverse Proxies
https://www.agwa.name/blog/post/fastcgi_is_the_better_protocol_for_reverse_proxies
#HackerNews #FastCGI #ReverseProxies #Protocol #Technology #WebDevelopment
-
FastCGI: 30 Years Old and Still the Better Protocol for Reverse Proxies
https://www.agwa.name/blog/post/fastcgi_is_the_better_protocol_for_reverse_proxies
#HackerNews #FastCGI #ReverseProxies #Protocol #Technology #WebDevelopment
-
Что случилось с CGI, и как FastCGI спас веб от катастрофы?
В девяностых CGI сделал интернет интерактивным, но чуть не убил его. Это не удивительно, ведь каждый клик пользователя порождал новый тяжеловесный процесс на сервере. Под катом разберу, из-за чего такой подход оказался бомбой замедленного действия, и почему именно технология FastCGI спасла веб от инфраструктурного коллапса. Читать
https://habr.com/ru/companies/ruvds/articles/1010078/
#CGI #FastCGI #история_IT #вебсерверы #системное_администрирование #Nginx #Apache #PHPFPM #архитектура_вебприложений #ruvds_статьи
-
This weekend project (yes, another one instead of finishing the 100 others) is a #fastcgi handler to implement xep-0070, alnowing to use an #xmpp account to log in to a website. Writing it in #rust as a learning exercise.
I hope to replace "login with google" and the other things I had to add to my website ovwr the years in order to not store people's passwords. This should allow to do it in a decentralized way without forcing any specific provider.
-
This weekend project (yes, another one instead of finishing the 100 others) is a #fastcgi handler to implement xep-0070, alnowing to use an #xmpp account to log in to a website. Writing it in #rust as a learning exercise.
I hope to replace "login with google" and the other things I had to add to my website ovwr the years in order to not store people's passwords. This should allow to do it in a decentralized way without forcing any specific provider.
-
Fun #vulnerability research and #exploit development writeup published a few months ago
CVE-2025-23016 - Exploiting the #FastCGI library
https://www.synacktiv.com/en/publications/cve-2025-23016-exploiting-the-fastcgi-library
-
Fun #vulnerability research and #exploit development writeup published a few months ago
CVE-2025-23016 - Exploiting the #FastCGI library
https://www.synacktiv.com/en/publications/cve-2025-23016-exploiting-the-fastcgi-library
-
New from Olvy:
Olvy Cache Purger - a lightweight, open-source WordPress plugin to manage your Nginx FastCGI cache the right way.- Automatic cache purging for posts, pages, WooCommerce products & categories
- Global purge button
- No bloat, just speed
- Ideal for high-performance WordPress & WooCommerce sites#WordPress #WooCommerce #Nginx #FastCGI #Caching #OlvyCloud #OpenSource #WebPerformance
-
New from Olvy:
Olvy Cache Purger - a lightweight, open-source WordPress plugin to manage your Nginx FastCGI cache the right way.- Automatic cache purging for posts, pages, WooCommerce products & categories
- Global purge button
- No bloat, just speed
- Ideal for high-performance WordPress & WooCommerce sites#WordPress #WooCommerce #Nginx #FastCGI #Caching #OlvyCloud #OpenSource #WebPerformance
-
@m3tti @leobm @plinubius @Christiansurrey
Ich komme aus dem Bereich der mittleren #Datentechnik der Firma #IBM. Als es bei mir mit der #Webentwicklung 1999 losging kannte ich viele Techniken bereits, ohne die dynamische #Websites nicht möglich wären.
Im Laufe der Zeit kamen immer mehr #Einzelbausteine dazu, um schicke, sichere und schnelle Websites zu entwickeln.
#Typo3 beispielsweise lernte ich mit Version 3.5 kennen. Unter der "Motorhaube" sind die heutigen Versionen natürlich deutlich komplexer und anspruchsvoller als die früheren Versionen.
Während ich mich früher durch #Quelltexte, #Dokus, Online-#Foren "kämpfen" musste, reicht es heute eine #KI zu fragen. Das empfinde ich als äußerst komfortabel.
Zudem ist wie bei allen Dingen immer der richtige #Startpunkt wichtig. Wenn man bei Typo3 beispielsweise ein gutes #Template verwendet, sind die restlichen Schritte gar nicht so schwer, denn auch Templates lassen sich durch aus so verändern wie der Kunde es möchte.
Mit dem Thema #CGI bzw. #FastCGI habe ich mich auch eine Zeitlang beschäftigt, aber da sind die größten Bedenken im #Sicherheitsbereich zu suchen.
Ob sich jemand für den Bereich der #Informatik interessiert oder nicht, hängt sicherlich auch von dem Willen und Durchhaltevermögen des einzelnen ab.
-
傳統的 cgi-bin 遇到現代的硬體
-
傳統的 cgi-bin 遇到現代的硬體
-
Have been mucking around with docker, caddy and php-fpm to experiment with different ways of running sabre/Baikal. Kind of confused about the way the fastCGI works...
The try_files directive makes it seem like I have to mount everything on the web server, including php files even though these are not executed on my web server or within the same container?
Can I not just mount the static html files on the web server and only load php files to the container running php-fpm?
Doesn't feel super secure and definitely feels pretty old school.
-
Have been mucking around with docker, caddy and php-fpm to experiment with different ways of running sabre/Baikal. Kind of confused about the way the fastCGI works...
The try_files directive makes it seem like I have to mount everything on the web server, including php files even though these are not executed on my web server or within the same container?
Can I not just mount the static html files on the web server and only load php files to the container running php-fpm?
Doesn't feel super secure and definitely feels pretty old school.
-
@gtsteel @philgyford are there ways to deploy applications developed with newer languages like #rust over #FastCGI? The only libraries I've found are to *run* FastCGI scripts, not *be* one 😑️
I just want a way to run my script so it stays active when in use but shuts off when not to save memory. Something that I feel is unique to small-scale deployments where you assume that your applications will *not* all be receiving traffic all the time
-
@gtsteel @philgyford are there ways to deploy applications developed with newer languages like #rust over #FastCGI? The only libraries I've found are to *run* FastCGI scripts, not *be* one 😑️
I just want a way to run my script so it stays active when in use but shuts off when not to save memory. Something that I feel is unique to small-scale deployments where you assume that your applications will *not* all be receiving traffic all the time
-
TIL Network protocols Sans I/O ⚡
“… network protocol implementations written in Python that perform no I/O (this means libraries that operate directly on text or bytes; this excludes libraries that just abstract out I/O).” 🤯
Read the reference page 👇
https://sans-io.readthedocs.io/#Reusability #Python #FastCGI #HTTP2 #H11 #IRC #OAuth2 #OAuthLib #WebSocket #SOCKS5 #RFC2217 #SerialOverIP #EPICS #FIX #QUIC #LanguageServerProtocol #SMTP #DBus #ThorlabsAPT #Matrix #SSL #TLS #CPython #multipart #formdata
-
TIL Network protocols Sans I/O ⚡
“… network protocol implementations written in Python that perform no I/O (this means libraries that operate directly on text or bytes; this excludes libraries that just abstract out I/O).” 🤯
Read the reference page 👇
https://sans-io.readthedocs.io/#Reusability #Python #FastCGI #HTTP2 #H11 #IRC #OAuth2 #OAuthLib #WebSocket #SOCKS5 #RFC2217 #SerialOverIP #EPICS #FIX #QUIC #LanguageServerProtocol #SMTP #DBus #ThorlabsAPT #Matrix #SSL #TLS #CPython #multipart #formdata
-
nginx + AWStats
AWStats 是個很老牌的分析工具,直接對 access log 分析後提供報表,本來以為是完全沒在動的專案,但從版本記錄發現 2020 年與 2023 年各有一版修安全性問題,看起來還是有在維護?
會想到要裝是因為這幾天被砍站,CPU credit 低到觸發我設定的 alarm:
除了處理外,也想快速看一下發生什麼事情,而這種砍站的在 JavaScript 類的分析服務上不會看到,需要直接對 server log 分析,所以就想到 AWStats 了...
Ubuntu 可以透過 sudo apt install -y awstats
https://blog.gslin.org/archives/2024/08/01/11918/nginx-awstats/
#Computer #DevOps #Murmuring #Network #Software #SRE #WWW #awstats #cgi #devops #fastcgi #fcgiwrap #nginx #perl #sre
-
nginx + AWStats
AWStats 是個很老牌的分析工具,直接對 access log 分析後提供報表,本來以為是完全沒在動的專案,但從版本記錄發現 2020 年與 2023 年各有一版修安全性問題,看起來還是有在維護?
會想到要裝是因為這幾天被砍站,CPU credit 低到觸發我設定的 alarm:
除了處理外,也想快速看一下發生什麼事情,而這種砍站的在 JavaScript 類的分析服務上不會看到,需要直接對 server log 分析,所以就想到 AWStats 了...
Ubuntu 可以透過 sudo apt install -y awstats
https://blog.gslin.org/archives/2024/08/01/11918/nginx-awstats/
#Computer #DevOps #Murmuring #Network #Software #SRE #WWW #awstats #cgi #devops #fastcgi #fcgiwrap #nginx #perl #sre
-
Man, if #DNSoverHTTPS is just this simple... :sagume_think:
http://mima.localghost.org/dns/chaotic.ninja/AAAA#!/bin/sh if [ $REQUEST_METHOD == "GET" ] then DNS_DOMAIN=$(echo "$QUERY_STRING" | sed -n 's/^.*domain=\([^&]*\).*$/\1/p' | sed "s/%20/ /g") DNS_TYPE=$(echo "$QUERY_STRING" | sed -n 's/^.*type=\([^&]*\).*$/\1/p' | sed "s/%20/ /g") [ -z $DNS_TYPE ] && DNS_TYPE=A if [ -d "$DNS_DOMAIN" ] then DNS_STATUS="NOERROR" LOCAL_REC="$DNS_DOMAIN/$DNS_TYPE" [ -e "$LOCAL_REC" ] && DNS_REC=$(cat "$LOCAL_REC") else DIG_RESPONSE=$(dig +noall +answer +comments "$DNS_DOMAIN" "$DNS_TYPE") DNS_STATUS=$(echo "$DIG_RESPONSE" | grep status | cut -d ':' -f 3 | cut -w -f 2 | cut -d ',' -f 1) if [ $DNS_STATUS == "NOERROR" ] then DNS_ANSWER=$(echo "$DIG_RESPONSE" | grep IN) DNS_REC=$(echo "$DNS_ANSWER" | cut -w -f 5-) DNS_TTL=$(echo "$DNS_ANSWER" | cut -w -f 2) fi fi fi httpstatus() { case $1 in 200) httpsemantic="OK";; 404) httpsemantic="Not Found";; esac printf "HTTP/1.0 $1 $httpsemantic\r\n" echo "Status: $1 $httpsemantic" } case $DNS_STATUS in "NOERROR") if [ ! -z "$DNS_REC" ] then httpstatus 200 echo "Cache-Control: private, max-age=$DNS_TTL" ANSWER="$DNS_REC" else httpstatus 404 ANSWER="NOERROR, but no $DNS_TYPE record" fi ;; "NXDOMAIN") httpstatus 404 ANSWER="$DNS_STATUS" ;; esac echo "Content-Type: text/plain" echo echo "$ANSWER"
With the following #nginx directives too assuming you got a #fastcgi set up already:upstream dohexperiment { server 127.0.0.1:80; } [...] location ~ /dns/(.*)/(.*)$ { proxy_pass http://dohexperiment/dns/index.cgi?domain=$1&type=$2; } location ~ /dns/(.*[^\/])$ { proxy_pass http://dohexperiment/dns/index.cgi?domain=$1; }
#DNS #HTTP #REST
RE: https://makai.chaotic.ninja/notes/9vyxx3nwty -
Man, if #DNSoverHTTPS is just this simple... :sagume_think:
http://mima.localghost.org/dns/chaotic.ninja/AAAA#!/bin/sh if [ $REQUEST_METHOD == "GET" ] then DNS_DOMAIN=$(echo "$QUERY_STRING" | sed -n 's/^.*domain=\([^&]*\).*$/\1/p' | sed "s/%20/ /g") DNS_TYPE=$(echo "$QUERY_STRING" | sed -n 's/^.*type=\([^&]*\).*$/\1/p' | sed "s/%20/ /g") [ -z $DNS_TYPE ] && DNS_TYPE=A if [ -d "$DNS_DOMAIN" ] then DNS_STATUS="NOERROR" LOCAL_REC="$DNS_DOMAIN/$DNS_TYPE" [ -e "$LOCAL_REC" ] && DNS_REC=$(cat "$LOCAL_REC") else DIG_RESPONSE=$(dig +noall +answer +comments "$DNS_DOMAIN" "$DNS_TYPE") DNS_STATUS=$(echo "$DIG_RESPONSE" | grep status | cut -d ':' -f 3 | cut -w -f 2 | cut -d ',' -f 1) if [ $DNS_STATUS == "NOERROR" ] then DNS_ANSWER=$(echo "$DIG_RESPONSE" | grep IN) DNS_REC=$(echo "$DNS_ANSWER" | cut -w -f 5-) DNS_TTL=$(echo "$DNS_ANSWER" | cut -w -f 2) fi fi fi httpstatus() { case $1 in 200) httpsemantic="OK";; 404) httpsemantic="Not Found";; esac printf "HTTP/1.0 $1 $httpsemantic\r\n" echo "Status: $1 $httpsemantic" } case $DNS_STATUS in "NOERROR") if [ ! -z "$DNS_REC" ] then httpstatus 200 echo "Cache-Control: private, max-age=$DNS_TTL" ANSWER="$DNS_REC" else httpstatus 404 ANSWER="NOERROR, but no $DNS_TYPE record" fi ;; "NXDOMAIN") httpstatus 404 ANSWER="$DNS_STATUS" ;; esac echo "Content-Type: text/plain" echo echo "$ANSWER"
With the following #nginx directives too assuming you got a #fastcgi set up already:upstream dohexperiment { server 127.0.0.1:80; } [...] location ~ /dns/(.*)/(.*)$ { proxy_pass http://dohexperiment/dns/index.cgi?domain=$1&type=$2; } location ~ /dns/(.*[^\/])$ { proxy_pass http://dohexperiment/dns/index.cgi?domain=$1; }
#DNS #HTTP #REST
RE: https://makai.chaotic.ninja/notes/9vyxx3nwty -
Установка и настройка phpMyAdmin: пошаговая инструкция
phpMyAdmin — это специальная утилита, написанная на PHP, которая реализует графический интерфейс для управления базами данных MySQL через браузер. Помимо визуального отображения таблиц, phpMyAdmin упрощает менеджмент баз данных, позволяя формировать SQL-запросы через панель управления без непосредственного написания команд или какого-либо кода. При этом phpMyAdmin реализует весь функционал SQL-запросов: просмотр, добавление, удаление и изменение баз данных, а также их таблиц, полей и индексов. В этом руководстве мы рассмотрим процесс установки phpMyAdmin и всех его зависимостей на удаленный хост. В показанных примерах используется облачный сервер Timeweb Cloud под управлением Ubuntu 22.04.
https://habr.com/ru/companies/timeweb/articles/824144/
#timeweb_статьи #phpMyAdmin #SQL #MySQL #PHP #Ubuntu #Nginx #FastCGI #Windows #SSH #БД #Cloud #MongoDB #html #веб #хост #FPM #HTTP
-
-
-
Needed a dynamic status page on some #embedded #pcengines #netbsd boxes, so thought I'd see if a #perl #nginx #fastcgi #daemon (with a pidfile & 'start', 'stop', status' etc) was quick to setup
Turns out: "yes"
#!/usr/pkg/bin/perl
use Daemon::Generic;
use CGI::Fast
socket_path => '127.0.0.1:8999',
listen_queue => 50;newdaemon( 'progname' => 'statusd');
sub gd_run {
while ( $q = CGI::Fast->new ) {
process_request($q);
}
}process_request() {
my $q = shift;
# code here
} -
-
@freyfogle #CGI’s bad rap came not from its programming model, but from its execution model of spawning a new process apart from the web server for every request. #FastCGI mitigated that by spinning up a separate persistent server that handles requests over and over again without forking, communicating with the web server over a socket, pipe, or TCP. It’s the same model as any other web application server.