proxy di inversione nginx, ssl offloading, caching e paypepepe tutto in uno.

Attualmente ospitiamo tutti i server Windows IIS 7. Siamo appena trasferiti in Azure e, come molte nuvole che ospitano le windows, è più costoso che ospitare linux. Azure ha le proprie limitazioni per le macchine virtuali (rispetto a AWS) in quanto è ansible solo bind un indirizzo IP pubblico a un servizio Web. Per superare questa limitazione e per build alcune funzionalità di fail-over e caching, guardiamo NginX come un bilanciatore di carico, proxy inverso per mettere davanti ai nostri server IIS.

Di recente abbiamo appreso che Google-Pagspeed per Apache è anche disponibile per NginX. Sulla base dei tutorial online e della nostra piccola esperienza, possiamo get tutti i vantaggi di NginX utilizzando 3 livelli separati di server NginX (vedi sotto). La mia domanda è come si può fare in un solo host virtuale?

  • haproxy + nginx: https trailing slashes reindirizzato a http
  • NGINX timeout di base di authorization?
  • Come forzare nginx per risolvere il DNS (di un nome host dinamico) each volta che si esegue proxy_pass?
  • Come get Mod_pagespeed per l'output compresso (gzip) css?
  • Nginx: SNI non funziona per nome_server con più argomenti
  • nginx con la comunicazione nginx usando http2 senza ssl
  • Ecco un esempio di ciò che possiamo probabilmente configurare ora:

    • Nginx1 – Questo server siede davanti a Nginx2 e fa SSL che rilascia e nasconde contenuti statici al server linux in cui è in esecuzione. Essa memorizzare le risorse statiche sia su disco che su ram.

    • NginX2 – Questo server NginX si trova davanti a Nginx3 e include il Google Ping Ping per NginX. L'objective di questo server è quello di minimizzare e combinare script e ottimizzare le immagini. Poiché queste operazioni possono essere costose, abbiamo messo NginX1 davanti a questo server.

    • NginX3 – (Il proxy HA functionrebbe anche se siamo bloccati con 3 istanze NginX in esecuzione in una sola volta). Questo è l'ultimo server NginX in esecuzione nella casella Linux. Il suo task è quello di agire come proxy inverso per la nostra azienda IIS. L'idea è che se presentiamo un altro server IIS (attualmente abbiamo solo due), allora aggiungiamo solo a questa configuration di NginX e Nginx fa il bilanciamento del carico. Ancora utilizziamo le sessioni adesive (a causa di un aspetto scadente asp / asp.net) ma in locazione possiamo dividere il carico di lavoro tra macchine virtuali differenti e scalare l'aggiunta di una macchina nella nostra "fattoria IIS" (non utilizzando la funzionalità farm IIS ).

    • 2X Server IIS – Questi sono solo iis server (tutti identici) che hanno più siti configurati e siti sono caricati loro tramite FTP o Git.

    Le domande:

    1. Sarei in grado di rinunciare ad avere 3 configurazioni di NginX separati (host virtuali) e combinare solo in uno? Se così qualsiasi esempio di come configurare NginX per questo in una singola configuraiton sarebbe AWESOME!
    2. Come possiamo mantenere gli obiettivi sopra e passare l'X inoltrata per l'indirizzo IP alle macchine back end iis?
    3. Quali suggerimenti potrebbero essere come fallimento nel caso in cui il nostro server NginX non riesce? Con l'impostazione sopra è il nostro unico punto di fallimento. Avere due server linux con l'installazione sopra, con una combinazione di failover DNS o semplicemente avere doppie record DNS risolvere il problema di avere il nostro server NginX andare giù?
    4. Come risorsa è NginX? È sicuro assumere che un'istanza "Micro" di Azure Extra con soli 768 MB di ram possa gestire 50-100 visitatori concorrenti?

    Grazie in anticipo!!!!!


    Riferimenti:

    NginX Paginepeed: http://ngxpagespeed.com/ngx_pagespeed_example/

    Ngine Reverse Proxy: http://www.andrewparisio.com/2011/02/how-to-create-reverse-https-failover.html

  • Come get Mod_pagespeed per l'output compresso (gzip) css?
  • One Solution collect form web for “proxy di inversione nginx, ssl offloading, caching e paypepepe tutto in uno.”

    1. sì è assolutamente ansible combinare questi server nginx in uno. Basta usare proxy_pass.
    2. Vedere l'intestazione di set proxy nel block http
    3. Doppie macchine NGINX (stessa configuration) in combinazione con il DNS round robin (o mettere qualcosa come un bilanciatore di carico AWS davanti, non so se hai qualcosa di simile in Azure)
    4. Alless. Dovresti pensare ai 1000 di connessioni con NGINX. Il tuo IIS sarebbe probabilmente il collo di bottiglia. (Non tendo in considerazione l'elaborazione di pagamenti supplementari che l'elaborazione di PaginePatta metterà su questa configuration, dovrai provarla e scoprirla)

    Innanzitutto nel block di http:

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; upstream pagespeed { server 127.0.0.1:8081; # weight=10 max_fails=3 fail_timeout=30s; } upstream iis { server 192.168.0.100:80; weight=10 max_fails=3 fail_timeout=10s; server 192.168.0.101:80; weight=10 max_fails=3 fail_timeout=10s; } 

    Quindi sarà necessario solo i seguenti blocchi di server (spogliati)

      server { listen 443; #SSL offloader server_name example.com; #do some ssl things here location / { proxy_pass http://pagespeed; #proxy to pagespeed on same nginx } } server { listen 8081; server_name example.com; #do some pagespeed things here #pagespeed on location / { proxy_pass http://iis; # proxy to 2 backend IIS servers } } 

    Usa la socket unix nella configuration a monte per get performance ancora migliori. Inoltre è ansible inserire la cache di pagine in Memcached.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.