Bad Gateway (502) nach Aktivierung von oAuth-Libs

Hallo liebe Elgg-Community,

vor 2 Tagen hatte sich leider mein 1.8.11 dazu entschieden, den Dienst zu quittieren. Nach mehrmaligem Spielen mit diversen Settings in Nginx, vHost, etc. weiss ich nun, wie zu erwarten, nicht mehr weiter und hoffe, das euch der rettende Gedanke kommt, der mir leider verwehrt blieb ^^.

So, nun zum eigentlichen Problem :

Ich wollte, testweise, das Twitter-Widget aktivieren. Dafür ist ja bekanntlich die oAuth-lib notwendig. Brav hab ich dann jenes PlugIn dafür aktiviert, den Cache geleert und die DB geupdatet (/upgrade.php).

Hiernach war die Site nicht mehr zugänglich, da Nginx einen Bad Gateway-Error ausgab (502).

Meinem ersten Versuch galt es, das vermeidlich schuldige PlugIn (oAuth) wieder zu deaktivieren. Da nun ja auch die Adminpage nicht mehr zugänglich war, hatte ich zunächst versucht, das PlugIn durch umbenennen des PlugIn-Ordners aus dem System zu entfernen (Umbenennen → erneutes DB-Update), ohne Erfolg. Auch ein Deaktivieren sämtlicher PlugIns (disabled-Datei im Mod-Ordner) bewirkte nichts.

Wie in einigen Foren [http://stackoverflow.com/questions/10003978/php-fpm-and-nginx-502-bad-gateway | http://forum.nginx.org/read.php?3,70566 ] geraten, versuchte ich anschließend das Bufferlimit des fastcgi hoch zu setzen, indem ich die vhost-config der elgg-site editierte
( Einfügen von : fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; ) und Nginx via Neustart dessen die config zu fressen gab.

Widererwarten wolltes Elgg noch immer net.

Tja, und hier endet auch schon meine bisherige Versuchsreihe. Ich weiss, es war nicht viel, nur leider war Google in diesem Falle leider noch nicht all zu ergiebig..^^.

Meine Hoffnung liegt nun ganz allein in euch (falls ich nicht doch noch was finde und wenn, werd ichs selbstverständlich hier posten). Vielen Dank schon mal an Jeden, der sich meinen Sermon überhaupt durchgelesen hat..^^ .

LG,

Jazz

PS : Hier die Logs, Configs,etc. :

[Allgemeines] :

OS : Debian 6.0 Squeeze
PHP : 5.3.17-1~dotdeb.0 | FPM-FCGI
Webserver : nginx/1.2.4
Mysql : 5.1.63-0+squeeze1

Notes :
- Config erfolgt unter der Nutzung von Froxlor

[vHost-Config] :

# 21_froxlor_normal_vhost_[myhostname].conf
# Created 24.02.2013 09:09
# Do NOT manually edit this file, all changes will be deleted after the next domain change at the panel.

server {
        listen 85.25.xxx.xxx:80;
        server_name    [myhostname];
        access_log    /var/customers/logs/Jazz-[myhostname]-access.log combined;
        error_log    /var/customers/logs/Jazz-[myhostname]-error.log error;
        root     /var/customers/webs/Jazz/Community/;
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }
# Check cache/css/js requests first, as we know the files won't exist
location ~ ^/cache/ {
    rewrite ^/cache\/(.*)$ /engine/handlers/cache_handler.php?request=$1&$args;
}

location /rewrite.php {
rewrite ^ /install.php;
}

location ~* ^/pg/(css|js) {
    rewrite ^/pg\/([A-Za-z0-9\_\-]+)$ /engine/handlers/page_handler.php?handler=$1&$args;
    rewrite ^/pg\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2&$args;
}

# For all other requests, try the file, or rewrite if it's PHP
location / {
    rewrite ^/tag\/(.+)\/?$ /engine/handlers/page_handler.php?handler=search&page=$1;
    rewrite ^/action\/([A-Za-z0-9\_\-\/]+)$ /engine/handlers/action_handler.php?action=$1&$args;
    rewrite ^/services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/service_handler.php?handler=$1&request=$2&$args;
    rewrite ^/export\/([A-Za-z]+)\/([0-9]+)\/?$ /engine/handlers/export_handler.php?view=$1&guid=$2;
    rewrite ^/export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ /engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4;
    rewrite /xml-rpc.php /engine/handlers/xml-rpc_handler.php;
    rewrite /mt/mt-xmlrpc.cgi /engine/handlers/xml-rpc_handler.php;
    rewrite ^/rewrite.php$ /install.php;
    if (!-d $request_filename){
        set $rule_11 1$rule_11;
    }
    if (!-f $request_filename){
        set $rule_11 2$rule_11;
    }
    if ($rule_11 = "21"){
        rewrite ^/([A-Za-z0-9\_\-]+)$ /engine/handlers/page_handler.php?handler=$1;
    }
    if (!-d $request_filename){
        set $rule_12 1$rule_12;
    }
    if (!-f $request_filename){
        set $rule_12 2$rule_12;
    }
    if ($rule_12 = "21"){
        rewrite ^/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2;
    }

}
}


[Error-Log (Nginx) ] :

2013/04/26 21:50:01 [error] 5075#0: *51471 open() "/var/customers/webs/Jazz/Community/robots.txt" failed (2: No such file or directory), client: 157.55.35.47, server: [myhostname], request: "GET /robots.txt HTTP/1.1", host: "[myhostname]"
2013/04/26 21:51:35 [error] 5075#0: *52683 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 157.55.35.47, server: [myhostname], request: "GET /friends/gregory199108 HTTP/1.1", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]"
2013/04/26 21:52:40 [error] 8679#0: *53641 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 157.55.35.47, server: [myhostname], request: "GET /friends/gregory199108 HTTP/1.0", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]"
2013/04/26 21:54:05 [error] 8678#0: *55609 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 66.249.76.219, server: [myhostname], request: "GET /view/2812 HTTP/1.1", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]"
2013/04/26 21:55:40 [error] 8678#0: *56970 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 173.81.143.37, server: [myhostname], request: "GET /groups/profile/2983/3ds-furryz HTTP/1.1", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]", referrer: "http://[myhostname]/profile/Kyuu$
2013/04/26 21:55:40 [error] 8678#0: *56970 open() "/var/customers/webs/Jazz/Community/favicon.ico" failed (2: No such file or directory), client: 173.81.143.37, server: [myhostname], request: "GET /favicon.ico HTTP/1.1", host: "[myhostname]"
2013/04/26 22:00:11 [error] 9257#0: *62175 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 66.249.76.219, server: [myhostname], request: "GET /polls/owner/Reascr HTTP/1.1", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]"
2013/04/26 22:02:59 [error] 9257#0: *65056 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 66.249.76.219, server: [myhostname], request: "GET /view/1707 HTTP/1.1", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]"
2013/04/26 22:03:43 [error] 9257#0: *65965 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 157.55.33.29, server: [myhostname], request: "GET /view/3117 HTTP/1.0", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]"
2013/04/26 22:05:58 [error] 9256#0: *69037 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 66.249.76.219, server: [myhostname], request: "GET /thewire/view/2710 HTTP/1.1", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]"
2013/04/26 22:07:48 [error] 9256#0: *71408 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 46.105.247.244, server: [myhostname], request: "GET /photos/image/1455/anti-device HTTP/1.0", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]", referrer: "http://[myhostname]/"
2013/04/26 22:08:31 [error] 9257#0: *72498 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 66.249.76.219, server: [myhostname], request: "GET /blog/owner/Reascr HTTP/1.1", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]"
2013/04/26 22:11:49 [error] 9256#0: *76848 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 66.249.76.219, server: [myhostname], request: "GET /view/112 HTTP/1.1", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]"
2013/04/26 22:13:30 [error] 9255#0: *78882 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 108.162.219.38, server: [myhostname], request: "GET /categories/list?category=[acategory] HTTP/1.1", upstream: "fastcgi://unix:/var/run/nginx/Jazz-[myhostname]-php-fpm.socket:", host: "[myhostname]"

 

  • Ich bin nicht sicher, was genau Du erreichen wolltest. Du schreibst, dass Du das Twitter-Widget aktivieren wolltest (welches durch das "twitter" plugin bereitgestellt wird). Dafür brauchst Du aber kein oauth-Plugin. Ein oauth-Plugin brauchst Du für das "twitter_api"-Plugin, welches die Authentifizierung eines Users mit Hilfe seines Twitter-Accounts ermöglicht.

    Bzgl. des "twitter"-Plugins ist folgendes zu erwähnen: in Elgg 1.8.15 wurde es entfernt, da es wohl nicht mehr den aktuellen Twitter-Nutzungsbedingungen genügt und außerdem sowieso bald nicht mehr funktionieren würde, da bei Twitter ein Update der API ansteht (bzw. die alte API nicht mehr funktionieren wird). Auf längere Sicht ist es also nicht mehr sehr empfehlenswert, das "twitter"-Plugin einzusetzen selbst wenn man seine Seite noch nicht auf Elgg 1.8.15 upgedatet hat.

    Für das "twitter_api"-Plugin (vor Elgg 1.8.15) ist das "oauth_api"-Plugin, das ebenfalls in Elgg (vor Elgg 1.8.15) enthalten ist, notwendig. Das "oauth_api"-Plugin kann allerdings NICHT verwendet werden, wenn "oauth_lib"-Plugin installiert ist. Es funktioniert ebenfalls NICHT, wenn die oauth-PHP-Extension auf dem Server installiert ist.

    Es ist nun die Frage, was genau Du installiert hast: oauth_lib- oder oauth_api-Plugin? Und ist auf dem Server die oauth-PHP-Extension installiert? Wenn Du nur das "twitter"-Plugin verwenden willst, brauchst Du gar kein oauth. Für das "twitter-api"-Plugin reicht das "oauth_api"-Plugin und Du mußt oauth_lib und die oauth-PHP-Extension wieder deinstallieren.

    Was für Auswirkungen Änderungen in den Konfigurationsdateien von nginx, vhost etc. haben bzw. ob diese Änderungen überhaupt notwendig waren oder das Problem erst verursacht haben, kann ich Dir leider nicht sagen. Ich würde Dir allerdings empfehlen, alle gemachten Änderungen in deren Konfiguration wieder rückgängig zu machen und zumindest vorläufig erst mal alle twitter- und oauth-Plugins auf Deiner Seite wieder zu deaktivieren, bis die Seite wieder ohne Probleme läuft.

  • Entschuldige meine verwirrende Schreibweise. Ja, es war das „oAuth-api“- Plugin (und nicht die lib), das ich aktivierte, wobei keine oAuth-PHP-Extension auf dem Server installiert war/ist. Dies sollte für die „Twitter-API“ sein, doch bis dahin kam ich garnicht.

    Selbst wenn ich sämtliche Änderungen meinerseits an Nginx / vHost wieder rückgängig mache und das „oAuth-api“ - Plugin entferne (sprich „lösche“ und/oder durch die disabled-datei deaktiviere (Andere Möglichkeiten bleiben mir ja nicht) ), verbleibts beim 502.

    Also entweder es verblieb, trotz des danach ausgeführten DB-Updates, noch irgendwas vom „oAuth-api“ - Plugin im Elgg (Cache oder DB) oder... . Hm, ja, was sonst..? Ich hatte sonst keine Änderungen an der Config durchgeführt..

     

    //edit : Ich werd mal versuchen, einfach den kompletten Server neuzustarten (auch wenn mir das wieder die Config vom Froxlor zerschiesst..) . Vielleicht hat sich auch irgendwas im Cache vom nginx verquert...

  • Deaktivierung des oauth_api Plugins und der Twitter-Plugins sollte auf alle Fälle reichen, wenn das Problem wirklich an diesen Plugins liegt. Konntest Du nach Erzeugen der disabled-Datei auf Deine Seite zugreifen? Wenn selbst dann kein Einloggen / Zugriff auf den Admin-Bereich möglich ist, dann scheint mir das doch sehr suspekt. Du kannst auch noch versuchen, ob es hilft, die Cache-Dateien von Elgg zu löschen (im Datenverzeichnis: die Dateien views und view_types und die Verzeichnisse views_simplecache und system_cache bzw was immer davon vorhanden). Bei Aufruf von upgrade.php sollte zwar der Cache zurückgesetzt werden aber vielleicht  ist da irgendetwas hängen geblieben. Löschen ist unproblematisch, da die Verzeichnisse / Dateien wieder erzeugt werden, sobald der Cache wieder gefüllt ist (sofern Caching in Elgg aktiviert ist).

    Was ansonsten ursächlich für den 502 Error sein könnte, kann ich Dir nicht sagen, da ich selbst kein nginx verwende. Vielleicht hilft es, Deine Frage nochmals auf Englisch hier auf der Seite einzustellen, da dann die Chance größer ist, dass Dir jemand helfen kann, der vielleicht das gleiche Problem schon mal hatte oder sich zumindest gut in nginx auskennt.

German Support Group

German Support Group

The German support group within the Elgg community.