Morning. I'm going to post my findings as a solution, because I feel it helps to keep the initial symptoms I experienced separate from my final analysis.
So. Navigate to your web page using your browser, and turn developer tools on. Click the network tab, select your main page, and scroll down to Response headers. Find the Server item. Mine says nginx. Yours might say apache or iis. The thing is though, I'm definitely using apache. It's a LAMP stack.
We bought a basic lamp from an isp, and didn't really tweak it in any way. The isp themselves set it up in the following way. When the server receives a web request, it is handled by nginx. nginx is better at handling malicious attacks than apache, so it filters the incoming requests. Any valid requests are then passed to apache, in my case php then generates some html and apache passes this html back to nginx. nginx then serves it to the client browser. All good, and I think it's just apache.
The following is conjecture. I set up apache compression, and I assume I did it correctly. The compressed html was sent to nginx, which presumably uncompressed it. Then, because I had no compression set in nginx, the uncompressed html was then served to the client browser. So I added extra overhead with no benefit whatsoever.
Eventually I noticed that my webserver logging was occurring under /var/log/nginx rather than /var/log/apache2. I set up nginx compression as follows:
Create a text file called /etc/nginx/conf.d/compress.conf (any file named *.conf is ok).
My file contained the following, but I really don't know if these are the optimum settings:
##
# `gzip` Settings
#
#
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/svg+xml
text/css
text/javascript
text/plain
text/xml;
Using the same test as before, the server now sent 432 packets of 1514 bytes each over 2.5 seconds, while my machine replied to each with a packet of 54 bytes. This totals around 639kb down and 23kb returned. Not as fast as I'd hoped, but I think my clients might see a more significant improvement.