librespeed / speedtest

Self-hosted Speed Test for HTML5 and more. Easy setup, examples, configurable, mobile friendly. Supports PHP, Node, Multiple servers, and more
https://librespeed.org
GNU Lesser General Public License v3.0
12.2k stars 2.2k forks source link

Docker doesn't seem to work anymore. 404 from apache #266

Closed RyanEwen closed 4 years ago

RyanEwen commented 4 years ago

Docker doesn't seem to work anymore. 404 from apache since pulling the latest image.

ironicbadger commented 4 years ago

Worked OK just now for me :+1:

adolfintel commented 4 years ago

Works for me as well. Try deleting the docker image and redownload it.

RyanEwen commented 4 years ago

Had this on 3 separate Ubuntu 18.04 VMs. Two were being updated automatically and had the issue. One wasn't and sure enough when I pulled the latest image I saw the issue on it as well. Went back to the previous image on all 3 and they're fine again.

ironicbadger commented 4 years ago

Post the output of docker images for the speedtest image to verify the SHA you have locally.

adolfintel/speedtest              latest              bf6464f94f3a        5 weeks ago         435MB

This is mine ^^^ and it works (also on Ubuntu 18.04 in docker).

adolfintel commented 4 years ago

I triggered a rebuild on docker hub. Try fetching the image now.

RyanEwen commented 4 years ago

@IronicBadger it was adolfintel/speedtest latest bf6464f94f3a 5 weeks ago 435MB

Since @adolfintel's rebuild, it is adolfintel/speedtest latest e8008eca3420 57 minutes ago 435MB

I just realized that I access this through nginx.. that seems like it might have something to do with it..

More details: nginx latest f7bb5701a33c 5 days ago 126MB

Docker version 19.03.5, build 633a0ea838 docker-compose version 1.22.0, build f46880fe

docker-compose.yml:

  speedtest:
    image: adolfintel/speedtest:latest
#    image: speedtest_old
    ports:
      - 8080:80
    restart: always

nginx conf:

server {
    listen 80;

    server_name <removed>

    root /config/www/;
    index index.html index.htm index.php;

    location / {
        root /www;
        autoindex on;
    }

    client_max_body_size 32M;

    location /speedtest {
        proxy_pass              http://127.0.0.1:8080;
        proxy_set_header        X-Real-IP               $remote_addr;
        proxy_set_header        Host                    $host;
        proxy_set_header        Scheme                  $scheme;
        proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto       $scheme;
        proxy_set_header        X-Forwarded-Host        $host;
        proxy_redirect          off;
    }
}
RyanEwen commented 4 years ago

Seems not to be nginx - same result when going directly to the port that I map the container to, eg http://my-site.com:8080/speedtest/

EDIT - after switching to host networking and back to port forwarding.. it's working on 8080 now.. but still not from behind nginx. So now I'm back to thinking it's nginx. Man this is being difficult.

RyanEwen commented 4 years ago

Okay got it working by changing

    location /speedtest {
        proxy_pass              http://127.0.0.1:8080;

to

    location /speedtest {
        proxy_pass              http://127.0.0.1:8080/;

Not sure why I have to do that now.. but I'm glad it's working

adolfintel commented 4 years ago

@fazo96 Do you know why this is happening?

ironicbadger commented 4 years ago

You wouldn't go to /speedtest unless you were going through nginx.

RyanEwen commented 4 years ago

The old nginx rule without the trailing slash worked with the older speedtest.

Maybe the apache image changed underneath yours somewhere along the line and now it's not listening for requests the same way it used to.

Good news is that it only affects reverse proxying and the container is fine standalone.

EDIT - maybe it was this change: https://github.com/librespeed/speedtest/commit/90e63e7da7744c182517c1682d3a6cfdad792d65#diff-3254677a7917c6c01f55212f86c57fbfL1