2017-01-19 72 views
0

我有一個nginx容器,在端口9200,作爲負載平衡器。這是配置文件:通過以下方式nginx作爲負載平衡器:上游路徑

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; 
     } 

    } 

這個容器的負載平衡請求:當到達一個請求localhost:9200/LynyrdSkynyrdFreebirdVideo.mp4localhost:9200/LynyrdSkynyrdFreebirdAudio.mp4,它平衡整個3對服務器的請求。這3個服務器是3個充當緩存的nginx容器。 這是nginx的高速緩存的配置文件:

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; 

    } 

} 

如果i點到負載平衡器,即localhost:9200/LynyrdSkynyrdFreebirdVideo.mp4localhost:9200/LynyrdSkynyrdFreebirdAudio.mp4,有404未找到。我希望如果我指向這個URL,負載平衡器將請求餘額爲192.168.99.103(or 104, or 105):9500/LynyrdSkynyrdFreebirdVideo.mp 4或192.168.99.103(or 104, or 105):9500/LynyrdSkynyrdFreebirdAudio.mp4。 但在upstream塊我不知道是否在server指令我可以添加一個路徑。

其實,這是,我認爲,特別的問題:事實上,如果我點到192.168.99.103 :9500/LynyrdSkynyrdFreebirdAudio(或視頻)的MP4,我得到正確的內容。

任何人都可以幫助我嗎?

回答

0

解決:

我已經添加路徑http://backend,如:

proxy_pass http://backend/LynyrdSkynyrdFreebirdVideo.mp4;