• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

XF 1.5 Stop appending port to URLs

Beanjam

Active member
#1
I'm running XF on a non-standard port behind a reverse proxy.

How can I stop XF from detecting the server port and appending it to all URLs?

Visitors should be oblivious to the server configuration and just see the domain name as normal with no appended port.
 

Beanjam

Active member
#2
It looks like I need to override the base url somewhere so that $requestPaths.fullBasePath doesn't contain the port.

Code:
<base href="{$requestPaths.fullBasePath}" />
<script><xen:comment>/* Chrome bug and for Google cache */</xen:comment>
    var _b = document.getElementsByTagName('base')[0], _bH = "{xen:jsescape $requestPaths.fullBasePath}";
    if (_b && _b.href != _bH) _b.href = _bH;
</script>
Maybe I can manually edit this in the PAGE_CONTAINER template, but whether there's a better way I don't know.
 

Mike

XenForo developer
Staff member
#3
You would likely need to override $_SERVER['SERVER_PORT'] in config.php to force it to what the correct one is (the version seen by the reverse proxy).
 

Beanjam

Active member
#4
Changing the below code getRequestPaths in library/XenForo/Application.php also fixes it, but I'd rather not do that.

How can I override the port in config.php? I can't find any mention of an option for that in the manual.

Code:
$host = $request->getServer('HTTP_HOST');
if (!$host)
{
        $host = $request->getServer('SERVER_NAME');
        $serverPort = intval($request->getServer('SERVER_PORT'));
        if ($serverPort && $serverPort != 80 && $serverPort != 443)
        {
                $host .= ':' . $serverPort;
        }
}
Change to just..

Code:
$host = $request->getServer('SERVER_NAME');
 

Mike

XenForo developer
Staff member
#5
You need to set $_SERVER['SERVER_PORT'] to what the "correct" port is (what the browser is connecting to the proxy with).

You'd just set that variable directly in config.php -- it's not a XenForo option. You're just effectively changing what we/PHP "see" as the port that was used.