home.social

#fastcgi — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #fastcgi, aggregated by home.social.

fetched live
  1. [Перевод] 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 победил, если он хуже технически. И ответ оказался любопытнее самого аргумента.

    habr.com/ru/articles/1030882/

    #fastcgi #http #reverseproxy #request_smuggling #desync #nginx #webинфраструктура #прокси

  2. 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.

    agwa.name/blog/post/fastcgi_is

  3. 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.

    agwa.name/blog/post/fastcgi_is

    #infosec #FastCGI #PHPFPM #PHP

  4. 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. 🎶🔄
    agwa.name/blog/post/fastcgi_is #FastCGI #outdated #technology #reverseproxy #techhumor #HackerNews #ngated

  5. 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. 🎶🔄
    agwa.name/blog/post/fastcgi_is #FastCGI #outdated #technology #reverseproxy #techhumor #HackerNews #ngated

  6. Что случилось с CGI, и как FastCGI спас веб от катастрофы?

    В девяностых CGI сделал интернет интерактивным, но чуть не убил его. Это не удивительно, ведь каждый клик пользователя порождал новый тяжеловесный процесс на сервере. Под катом разберу, из-за чего такой подход оказался бомбой замедленного действия, и почему именно технология FastCGI спасла веб от инфраструктурного коллапса. Читать

    habr.com/ru/companies/ruvds/ar

    #CGI #FastCGI #история_IT #вебсерверы #системное_администрирование #Nginx #Apache #PHPFPM #архитектура_вебприложений #ruvds_статьи

  7. 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.

  8. 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.

  9. 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

    olvy.io/835nN

    #WordPress #WooCommerce #Nginx #FastCGI #Caching #OlvyCloud #OpenSource #WebPerformance

  10. 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

    olvy.io/835nN

    #WordPress #WooCommerce #Nginx #FastCGI #Caching #OlvyCloud #OpenSource #WebPerformance

  11. @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.

  12. As @matt_garber correctly pointed out, #FastCGI is the way to go. It does not fork and it does scale quite well. Again it was perceived as "non-fashionable" @zirias @wollman @rubenerd @dexter

  13. As @matt_garber correctly pointed out, #FastCGI is the way to go. It does not fork and it does scale quite well. Again it was perceived as "non-fashionable" @zirias @wollman @rubenerd @dexter

  14. 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.

    #php #fastcgi #cgi #oss

  15. 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.

    #php #fastcgi #cgi #oss

  16. @gtsteel @philgyford are there ways to deploy applications developed with newer languages like over ? 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

  17. @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

  18. 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 👇
    sans-io.readthedocs.io/

  19. 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 👇
    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

  20. nginx + AWStats

    AWStats 是個很老牌的分析工具,直接對 access log 分析後提供報表,本來以為是完全沒在動的專案,但從版本記錄發現 2020 年與 2023 年各有一版修安全性問題,看起來還是有在維護?

    會想到要裝是因為這幾天被砍站,CPU credit 低到觸發我設定的 alarm:

    除了處理外,也想快速看一下發生什麼事情,而這種砍站的在 JavaScript 類的分析服務上不會看到,需要直接對 server log 分析,所以就想到 AWStats 了...

    Ubuntu 可以透過 sudo apt install -y awstats

    blog.gslin.org/archives/2024/0

    #Computer #DevOps #Murmuring #Network #Software #SRE #WWW #awstats #cgi #devops #fastcgi #fcgiwrap #nginx #perl #sre

  21. nginx + AWStats

    AWStats 是個很老牌的分析工具,直接對 access log 分析後提供報表,本來以為是完全沒在動的專案,但從版本記錄發現 2020 年與 2023 年各有一版修安全性問題,看起來還是有在維護?

    會想到要裝是因為這幾天被砍站,CPU credit 低到觸發我設定的 alarm:

    除了處理外,也想快速看一下發生什麼事情,而這種砍站的在 JavaScript 類的分析服務上不會看到,需要直接對 server log 分析,所以就想到 AWStats 了...

    Ubuntu 可以透過 sudo apt install -y awstats

    blog.gslin.org/archives/2024/0

    #Computer #DevOps #Murmuring #Network #Software #SRE #WWW #awstats #cgi #devops #fastcgi #fcgiwrap #nginx #perl #sre

  22. 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

  23. 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

  24. Установка и настройка phpMyAdmin: пошаговая инструкция

    phpMyAdmin — это специальная утилита, написанная на PHP, которая реализует графический интерфейс для управления базами данных MySQL через браузер. Помимо визуального отображения таблиц, phpMyAdmin упрощает менеджмент баз данных, позволяя формировать SQL-запросы через панель управления без непосредственного написания команд или какого-либо кода. При этом phpMyAdmin реализует весь функционал SQL-запросов: просмотр, добавление, удаление и изменение баз данных, а также их таблиц, полей и индексов. В этом руководстве мы рассмотрим процесс установки phpMyAdmin и всех его зависимостей на удаленный хост. В показанных примерах используется облачный сервер Timeweb Cloud под управлением Ubuntu 22.04.

    habr.com/ru/companies/timeweb/

    #timeweb_статьи #phpMyAdmin #SQL #MySQL #PHP #Ubuntu #Nginx #FastCGI #Windows #SSH #БД #Cloud #MongoDB #html #веб #хост #FPM #HTTP

  25. 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
    }

  26. @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.