2011-09-26 16 views

risposta

7

Si potrebbe provare a utilizzare il modulo split clients:

http { 

    # Split clients (approximately) equally based on 
    # client ip address 
    split_clients $remote_addr $cdn_host { 
    33% cdn1; 
    33% cdn2; 
    - cdn3; 
    } 

    server { 
    server_name example.com; 

    # Use the variable defined by the split_clients block to determine 
    # the rewritten hostname for requests beginning with /images/ 
    location /images/ { 
     rewrite^http://$cdn_host.example.com$request_uri? permanent; 
    } 
    } 
} 
+3

Questa è la soluzione giusta per la domanda, ma non è il modo migliore per fare ciò che mi aspetto che tu voglia realmente. In particolare, stai cercando di scaricare il lavoro dai tuoi server web. Se la tua applicazione invia le richieste CDN al tuo server web prima di essere reindirizzato, in realtà non stai scaricando tutto sul CDN. Idealmente vorrai che la tua stessa applicazione rilevi direttamente i link alle risorse sulla CDN. Se utilizzi Rails, puoi utilizzare la funzione incorporata "asset hosts". Altri quadri hanno caratteristiche simili o puoi DIY :) – genexp

0

Questo è ovviamente possibile. Nginx viene fornito con bilanciamento del carico:

upstream mysite { 
    server www1.mysite.com; 
    server www2.mysite.com; 
} 

Definisce 2 server per il bilanciamento del carico. Di default le richieste saranno equamente distribuite su tutti i server definiti. È comunque possibile aggiungere pesi alle voci del server.

Dentro il tuo {} configurazione del server è ora possibile aggiungere il seguente per passare le richieste in ingresso al bilanciamento del carico (ad esempio per caricare bilanciare tutte le richieste di directory di immagini):

location /images/ { 
     proxy_pass http://mysite; 
} 

Dai un'occhiata al documentation per una descrizione più dettagliata.

+0

ho provato questa soluzione, ma non sta a monte si trova sul mio server –

+5

Questa non è la soluzione giusta. Il punto del CDN è di scaricare effettivamente il lavoro dal server web. In questo modo, tutte le richieste verranno inviate al CDN anziché reindirizzate, il che rende generalmente inutile il CDN. – genexp

Problemi correlati