Page 1 of 1

Verständnisfrage

Posted: Sun Jan 27, 2019 7:10 pm
by smk
Hallo,

Auf meinem Server habe ich mein Blog in einem LXC Container und zusätzlich habe ich ein LXC Container der als Reverse Proxy dient. Bei mir läuft alles über nginx.

Nginx für mein Blog läuft nicht auf Port 80 oder 443 sondern von mir ausgedachten Port. Der Rev-Proxy nimmt alle anfragen von Port 80 und 443 an und kontaktiert den entsprechenden Container. Obwohl ich bei der Installation keinen Port angegeben habe verweist mein Theme (Clean-Blog) auf meine URL mit den Port meiner nginx

Code: Select all

https://blog.knasan.de:8012
Ist nicht weiter schlimm, aber ich möchte verstehen warum mein Port ausgelesen und verarbeitet wird.

Ein kurzer blick in meiner Datenbank von S9y (s9y_config) konnte ich den Port nirgends finden. Daher verstehe ich nicht woher der Port kommt.

Code: Select all

MariaDB [s9y]> select name,value from s9y_config where name = "defaultBaseURL";
+----------------+------------------------+
| name           | value                  |
+----------------+------------------------+
| defaultBaseURL | https://blog.knasan.de |
+----------------+------------------------+
1 row in set (0.00 sec)

Code: Select all

MariaDB [s9y]> select name,value from s9y_config where name = "autodetect_baseURL";
+--------------------+-------+
| name               | value |
+--------------------+-------+
| autodetect_baseURL | true  |
+--------------------+-------+
1 row in set (0.00 sec)
Weiß jemand warum das so ist oder wo ich Hand anlegen kann? Bin für jeden Tipp dankbar.

Re: Verständnisfrage

Posted: Sun Jan 27, 2019 7:58 pm
by thh
smk wrote: Sun Jan 27, 2019 7:10 pm Obwohl ich bei der Installation keinen Port angegeben habe verweist mein Theme (Clean-Blog) auf meine URL mit den Port meiner nginx

Code: Select all

https://blog.knasan.de:8012
[...]

Code: Select all

MariaDB [s9y]> select name,value from s9y_config where name = "autodetect_baseURL";
+--------------------+-------+
| name               | value |
+--------------------+-------+
| autodetect_baseURL | true  |
+--------------------+-------+
1 row in set (0.00 sec)
Das wird es sein: s9y soll als Base-URL die Daten verwenden, unter denen das Blog aufgerufen wird, egal was konfiguriert ist (sinnvoll, wenn man ein Blog unter verschiedenen Hostnamen/Domains aufrufen will). Aufgerufen wird aber - aus Sicht des Servers, auf dem s9y läuft - "https://blog.knasan.de:8012"; das sind die Daten, die für $_SERVER['HTTP_HOST'] und $_SERVER['SERVER_PORT'] gesetzt sind.

Stell das mal aus (in der Config im Backend oder direkt in der Datenbank), und das Problem sollte verschwinden.

Re: Verständnisfrage

Posted: Sun Jan 27, 2019 8:01 pm
by onli
Das könnte aus https://github.com/s9y/Serendipity/blob ... c.php#L222 kommen:

Code: Select all

        case 'defaultBaseURL':
        case 'baseURL':
            $ssl  = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on';
            $port = $_SERVER['SERVER_PORT'];
            return sprintf('http%s://%s%s%s',
                            $ssl ? 's' : '',
                            preg_replace('@^([^:]+):?.*$@', '\1', $_SERVER['HTTP_HOST']),
                            (($ssl && $port != 443) || (!$ssl && $port != 80)) ? (':' . $port) : '',
                            rtrim(dirname($_SERVER['PHP_SELF']), '/') .'/'
                   );
Wenn der Port kein Standardport ist wird er hier wohl als Standardwert gesetzt.

Re: Verständnisfrage

Posted: Sun Jan 27, 2019 9:06 pm
by smk
Danke für die Erklärung.
Da ich mein Blog für meine Hauptdomain und Subdomain verwenden möchte, habe ich diese Funktion aktiviert.

Zu Testzwecken habe ich den Wert von "autodetect_baseURL" auf "false" gesetzt. Danach ging mein Blog gar nicht mehr. Weder mit der Haupt noch Subdomain.