504 Gateway Timeout bei Reverseproxy

Guten Morgen!

Ich bin gerade auf der Fehlersuche, da bei mir sei dem Upgrade auf 3.0 der Zugriff über meinen Reverseproxy nicht mehr funktioniert. Die Seite wird normal geladen und versucht dann über das webfront.js auf die /api Schnittstelle zuzugreifen.
Dabei bekomme ich jedoch immer einen 503er Fehler (504 Gateway Timeout bei Reverseproxy).

Hat jemand eine Idee woran das liegen kann?
Die Verbindung zwischen den Servern ist nicht die schnellste, kann es sein, dass es sich dabei wirklich nur um einen Timeout handelt?

Hier noch der Request und die Antwort:
Request


Request URL:https://www.mydomain.at/ips/api/
Request Method:POST
Status Code:504 Gateway Timeout

Request Headers


Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Content-Length:80
Content-Type:application/json
Cookie:PHPSESSID=9afe39ae93b0ebb823d4f9bc0c27428f
Host:www.mydomain.at
Origin:https://www.mydomain.at
Referer:https://www.mydomain.at/ips/?
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36

Request Payload


{jsonrpc:2.0, method:WFC_GetConfigurators, params:[], id:1376641760411}

Response Headers


Cache-Control:
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:99
Content-Type:text/html
Date:Fri, 16 Aug 2013 08:28:03 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=99
Pragma:
Server:Apache
Vary:Accept-Encoding,User-Agent
X-Powered-By:PHP/5.3.27

Response


<!DOCTYPE html>
<html><head><title>504 Gateway Timeout</title></head>
<body><h1>504 Gateway Timeout</h1></body></html>

LG,
Peter

ich bin hier leider noch nicht weitergekommen. :frowning:

@paresy
In welchen Fällen schickt der IPS Webserver denn einen 504er Fehler?
Es dauert sehr lange bis eine Response kommt.
Der problematische Zugriff erfolgt auf /api.

LG,
Peter

Hab das Problem nun gefunden.
Mein Script hat die HTTP Header case sensitive geparst. :stuck_out_tongue:

Das Javascript webfront.js sendet die JSON-RPI Aufrufe leider mit einem „Content-type“ anstatt einem „Content-Type“.
Daher wurde der Request-Payload nicht abgefragt und es blieb hängen.

Hab das nun berücksichtigt und es funktioniert wieder alles. :slight_smile:

PS:
Ich werd noch einen VPN Server/Client in meinen PHP-Reverseproxy integrieren und ihn dann gerne hier zur Verfügung stellen.
Wenn jemand vorab Interesse hat, bitte einfach melden.

LG,
Peter

Hast Du dem Reverser beigebracht, dass er nicht mehr „case sensitive“ arbeitet?
Oder wie hast Du es umgangen?

da ich die Header parsen muss, hab ich hier einen Fix eingebaut, der auf „Content-type“ und „Content-Type“ reagiert.

Hier meine Funktion, als Beispiel:


protected function handleClientHeaders() {
		$headers = $this->request_headers();
		foreach ($headers as $header => $value) {
			switch($header) {
				case 'Host' :
					$proxy_hostname = explode("/",$this -> proxy_url);
					$proxy_hostname = $proxy_hostname[2];
					$this -> setClientHeader(sprintf('%s: %s', $header, $proxy_hostname));
					break;
				case "Cookie":
					$this->request_cookie = $value;
					$this -> setClientHeader(sprintf('%s: %s', $header, $value));
					break;
				case "Content-Type":
				case "Content-type":
					$this->request_contenttype = $value;
					$this -> setClientHeader(sprintf('%s: %s', $header, $value));
					break;
				default:
					$this -> setClientHeader(sprintf('%s: %s', $header, $value));
					break;
			}
		}
	}

LG,
Peter