Devo utilizzare la riscrittura o il return o il proxy_pass in nginx?

La documentazione Apache chiaramente afferma che mod_rewrite dovrebbe essere solo un ultimo resort. Per la nginx , la sezione Impedenze contiene esempi in cui la richiesta_uri è sostanzialmente invariata.


La situazione è questa:

  • block block nginx e wget
  • Quale scopo serve un file gif vuoto (1x1 pix)?
  • Due domini, due certificati SSL, un IP
  • password dell'authorization nginx o ip
  • coda uwsgi dell'inondazione del messaggio di socket?
  • Come applicare le stesse regole a diverse località con Nginx?
    • Noi (un dipartimento in un istituto) possiamo avere un server web principale che dovrà essere aggiornato presto (eseguendo Debian 6). Per affrontare l'aggiornamento, ho installato un server nginx, in grado di proiettare parti notoriamente funzionanti bene ad un server aggiornato e ad altri server del vecchio server.
    • Il vecchio server aveva una serie di regole di ProxyPass (una quantità significativa del suo lavoro è proxy). Vorrei spostarli tutti in nginx , poiché, come ho capito, la nginx è più performante nel proxying.
    • Un gran numero di utenti hanno directory home dell'utente che viene utilizzato da un altro server. Per questi utenti sono disponibili versioni tilde e non tilde (ad esempio, http://my.site/muru e http://my.site/~muru potrebbero essere passati a http://other.server/~muru , ma http://other.server/muru non esiste).
    • Alcune cartelle sono state passate a una cartella diversa sullo stesso server. (ad esempio, il sito http://my.site/local-club sarebbe proxied a http://my.site/~local-club ).

    La mia domanda principale è:

    • Dato A e B entrambi proxy a C su un server diverso, dovrei usare la rewrite o la location con il return alle richieste di reindirizzamento da B a A o continuare a proxy entrambi?
    • Dato A e B sia sullo stesso server, con B che sono proxy a A, dovrei usare la riscrittura o ritorna per redirect B a A?

    Il reindirizzamento (e il return ) ha il vantaggio di indicare chiaramente la relazione tra le due directory.


    Le mie regole di rewrite assomigliano:

     rewrite ^/B(/.*) /A$1 permanent; 

    E le regole di return :

     location ~ ^/B(/.*) { return 301 /A$1; } 

    Con:

     location ~ ^/~(A|D|E|F..)/ { proxy_pass https://other.server; proxy_redirect default; } 

  • Firewall in un host KVM, impedisce l'accesso a VM
  • 502 Bad Gateway errore dopo le richieste non riuscite utilizzando Passenger
  • Come devo configurare SELinux quando si esegue nginx all'interno di Docker
  • nginx reindirizza indietro a remote_addr IP
  • Crittografia di traffico LAN e wifi su piccola networking privata
  • Nginx + PHP 5.3.3 (con php-fpm) - utilizzo della memory?
  • One Solution collect form web for “Devo utilizzare la riscrittura o il return o il proxy_pass in nginx?”

    Ciò non import esattamente se il vostro server nginx si occuperà di migliaia di richieste al secondo e si desidera evitare each richiesta di trascorrere il tempo della CPU nella corrispondenza delle regex di riscrittura. Ora, vorrei dire che utilizzare il modo più chiaro per scrivere i file di configuration fino a raggiungere questo limite, quindi se non hai il budget per scalare l'infrastruttura, sarebbe tempo di pensare a truccare la tua configuration per adattarsi al tuo traffico. Lo svantaggio del return è che se si dispone di più redirezioni si finisce con una posizione che avvolge una direttiva di return. Utilizzando la riscrittura è ansible avvolgerti più di loro in una posizione generica e testare nel primo parametro per un model più specifico.

    Aggiornamento: un esempio di reindirizzamento multiplo in una posizione generica:

     location /B { rewrite ^/B/foo/(.*)$ /A/newfoo/$1 permanent; rewrite ^/B/bar/(.*)$ /A/newbar/$2 permanent; rewrite ^/B/(.*)$ /A/$1 permanent; } 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.