Can I chain a web server to another?

From: CHYRON (DSMITHHFX)26 Feb 2018 15:35
To: ALL1 of 13
Not sure how to describe what I'm looking for:

We have an underpowered PC (an old Mac g4 single-core ppc, maxed-out @ 768MB, actually) running linux with a domain pointing to it for our staging server.

This is fine for ~97% of our staging needs.

BUT, for rarely-needed CMS stuff it's really too slow.

Is it possible to also use another, more modern and powerful pc on our LAN as a (sometime) web server, sharing the same domain, through some sort of proxy thingie pointed at the current server?

 
From: ANT_THOMAS26 Feb 2018 16:58
To: CHYRON (DSMITHHFX) 2 of 13
Might not be the answer but Apache Reverse proxy can point a domain/subdomain to a different address.

So you could setup cms.domain and it points to the better server.
From: CHYRON (DSMITHHFX)26 Feb 2018 17:35
To: ANT_THOMAS 3 of 13
Ooh, that may be exactly what I need.

I also remembered I could (probably) run MySQL on the other (more powerful) pc.
From: CHYRON (DSMITHHFX)26 Feb 2018 20:38
To: ANT_THOMAS 4 of 13
Yep, finally got the reverse proxy working on our staging server. Got stuck until I enabled mod proxy_http (server is configured to redirect port 80 traffic to 443 but t'other server isn't).

Thanks Ant!
From: ANT_THOMAS26 Feb 2018 21:14
To: CHYRON (DSMITHHFX) 5 of 13
Glad to hear it was the answer! :)
From: CHYRON (DSMITHHFX)27 Feb 2018 22:09
To: ALL6 of 13
And indeed it works for both plain HTML sites and a test Beehive install I did a few months ago. But Wordpress comes through all broken -- pages load with (at least) some images, but no css or scripts.

I've been reading a bunch of WP-behind-reverse-proxy tutorials, but none seem exactly applicable to my config  :-(
From: Peter (BOUGHTONP)27 Feb 2018 22:52
To: CHYRON (DSMITHHFX) 7 of 13
Unless the proxy is configured to handle some content types differently to others, it will be treating them all the same.

The obvious thing to check/rule out is missing files or incorrect permissions, though it could also be that static ascii files are being gzipped and that's tripping it up, or if there's a minifier plugin that does local requests on a misconfigured hostname, or a CDN using a subdomain that isn't proxied.

Manual HTTP requests through PuTTY and/or curl are a useful way to figure out what's actually going on.

From: CHYRON (DSMITHHFX)28 Feb 2018 15:03
To: Peter (BOUGHTONP) 8 of 13
Thanks Peter.

In addition to the complications you raise, is that WP insists on absolute links for everything, and there's no easy workaround to switch/convert to relative links.

It's a clean install of latest WP release running on bog-standard LAMP, so no special config or plugins running on it ATM.

I'll look into the CDN thing, could be a culprit with missing scripts.
From: CHYRON (DSMITHHFX)28 Feb 2018 16:12
To: ALL9 of 13
"Relative URL" WP plugin did the trick. Strange, because it didn't work yesterday, though I probably had some other thing misconfigured.
From: Peter (BOUGHTONP)28 Feb 2018 22:26
To: CHYRON (DSMITHHFX) 10 of 13
A properly setup reverse proxy doesn't care about absolute/relative URLs, because from the browser's perspective it's just interacting with the public face - it doesn't know/care which server the request is handled by.

Since you mentioned redirecting 80->443 I'm guessing the issue is/was with HTTP vs HTTPS and one of them was generating links that the other wouldn't serve.

From: CHYRON (DSMITHHFX) 1 Mar 2018 00:33
To: Peter (BOUGHTONP) 11 of 13
Quite possibly.
From: CHYRON (DSMITHHFX)14 May 2018 17:06
To: ALL12 of 13
double reverse-proxy trouble:

I'm trying to add another proxied site, from a different pc behind our our staging server. I duplicated the relevant lines in default-ssl.conf and changed the details thus:
Code: 
ProxyRequests Off

# reverse proxy to serverA/siteA 022718
<Location "/siteA">
    ProxyPass http://serverA/siteA
    ProxyPassReverse http://serverA/siteA
    Order allow,deny
    Allow from all
    Authtype Basic
    Authname "Restricted Access"
    AuthUserFile /etc/apache2/.htpasswd
    Require user ******
</Location>

# reverse proxy to serverB/siteB 051418
<Location "/siteB">
    ProxyPass http://serverB/siteB
    ProxyPassReverse http://serverB/siteB
    Order allow,deny
    Allow from all
    Authtype Basic
    Authname "Restricted Access"
    AuthUserFile /etc/apache2/.htpasswd
    Require user *******
</Location>

"SiteA" (the original proxied wp site) continues to show the web-facing domain in the address bar

"SiteB" (another cms-y thing) switches from "https://mydomain.com/siteB" to "http://serverB/siteB" upon loading.

Pretty sure I did no special config to the siteA apache instance, or if I did, can't find where it might be.  :-(
EDITED: 14 May 2018 17:15 by DSMITHHFX
From: CHYRON (DSMITHHFX)14 May 2018 18:08
To: ALL13 of 13
Nurmind. Like the wp, I had to modify a base url in the cms-y thing to point to the front-facing server.

All good (but not the >2-hours I wasted before it dawned on me :-/ ).