0

i've an nginx container, on port 9200, that acts as load balancer. This is config file:

proxy_ignore_headers Set-Cookie; add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Headers' 'Range'; upstream backend { server 192.168.99.103:9500 weight=3; server 192.168.99.104:9500; server 192.168.99.105:9500; } server { listen 80; server_name 172.17.0.1; location = /LynyrdSkynyrdFreebirdAudio.mp4 { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Headers' 'Range'; if ($request_method = OPTIONS ) { add_header Access-Control-Allow-Methods "GET, OPTIONS"; add_header Content-Length 0; add_header Content-Type text/plain; return 200; } proxy_pass http://backend/; add_header X-Upstream $upstream_addr; } location = /LynyrdSkynyrdFreebirdVideo.mp4 { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Headers' 'Range'; if ($request_method = OPTIONS ) { add_header Access-Control-Allow-Methods "GET, OPTIONS"; add_header Content-Length 0; add_header Content-Type text/plain; return 200; } proxy_pass http://backend; add_header X-Upstream $upstream_addr; } } 

This container load balance requests in the following way: when arrives a request localhost:9200/LynyrdSkynyrdFreebirdVideo.mp4 or localhost:9200/LynyrdSkynyrdFreebirdAudio.mp4, it balances requests across 3 servers. These 3 servers are 3 nginx containers that acts as cache. This is config file of nginx caches:

proxy_cache_path /tmp/nginx levels=1:2 keys_zone=my_zone:10m inactive=60m; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_methods GET HEAD POST; proxy_cache_valid 200 206 100m; proxy_ignore_headers Set-Cookie; add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Headers' 'Range'; server { listen 80; server_name 172.17.0.1; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} location /demo/ { proxy_cache my_zone; add_header X-Proxy-Cache $upstream_cache_status; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://172.17.0.1:8700/shaka-player-master/demo/index1.html ; } location /media { proxy_cache my_zone; add_header X-Proxy-Cache $upstream_cache_status; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://172.17.0.1:8700/shaka-player-master/media/example-av.mpd ; } location = /example-av1.mpd { add_header 'Access-Control-Allow-Origin' '*'; proxy_cache my_zone; add_header X-Proxy-Cache $upstream_cache_status; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://192.168.99.103:9600/shaka-player/media/example-av1.mpd; } location = /LynyrdSkynyrdFreebirdVideo.mp4 { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Headers' 'Range'; proxy_cache my_zone; add_header X-Proxy-Cache $upstream_cache_status; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://192.168.99.103:9600/shaka-player/media/LynyrdSkynyrdFreebirdVideo.mp4 ; } location = /LynyrdSkynyrdFreebirdAudio.mp4 { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Headers' 'Range'; proxy_cache my_zone; add_header X-Proxy-Cache $upstream_cache_status; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://192.168.99.103:9600/shaka-player/media/LynyrdSkynyrdFreebirdAudio.mp4; } } 

If i point to load balancer, i.e. localhost:9200/LynyrdSkynyrdFreebirdVideo.mp4 or localhost:9200/LynyrdSkynyrdFreebirdAudio.mp4, there is 404 not found. I expect that, if i point to this URL, load balancer balances request to 192.168.99.103(or 104, or 105):9500/LynyrdSkynyrdFreebirdVideo.mp4 or 192.168.99.103(or 104, or 105):9500/LynyrdSkynyrdFreebirdAudio.mp4. But in the upstream block i don't know if in server directive i can add a path.

In fact, this is, i think, the very problem: in fact, if i point to 192.168.99.103(or104, or105):9500/LynyrdSkynyrdFreebirdAudio(or Video).mp4, i get the content correctly.

1 Answer 1

0

Solved:

I have added path to http://backend, like:

 proxy_pass http://backend/LynyrdSkynyrdFreebirdVideo.mp4; 
1
  • Or you can just use location /LynyrdSkynyrdFreebirdAudio.mp4 instead of location = /LynyrdSkynyrdFreebirdAudio.mp4 Commented Jan 19, 2017 at 18:32

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.