Come Apache unisce le sezioni di località più corrispondenti

Sto lavorando ad una configuration di apache di base, ma non capisco esattamente come apache unisce diverse sezioni <Location> quando molti di essi corrispondono a un URL di richieste in entrata. La documentazione di apache nella sua sezione "Come si fondono le sezioni" è un po 'confusa quando si tratta dell'ordine / priorità di diverse sezioni corrispondenti dello stesso tipo.

Ad esempio, immagina la seguente configuration apache (ignora se i contenuti effettivi hanno un senso o less, sono interessato solo all'ordine delle applicazioni di each regola / sezione):

  • Impostazione di sotto-domini con 123-reg.co.uk
  • Errore durante l'installazione di APC in apache2 VPS con php-5.5.1
  • fallito non funziona su installazione di ubuntu 14.04, perché?
  • Apache: Qual è il modo migliore per gestire migliaia di reindirizzamenti permanenti?
  • Come verificare se la compressione di Apache funziona?
  • Come faccio a migliorare le performance del mio sito di Drupal con molti utenti concorrenti?
  •  <Location / > ProxyPass http://backend.com/ Order allow,deny Satisfy any </Location> <Location /sub/foo> Order allow,deny </Location> <Location /sub > Order deny,allow Require valid-user Satisfy all </Location> <Location /doesnt/match > ProxyPass ! </Location> 

    Ora se un cliente fa una richiesta a /sub/foobar , quale è la configuration finale che verrà applicata a questa richiesta?

    La configuration applicata è l'equivalente di:

     # All the directives contained in all the matchin Locations in declaration order ProxyPass http://backend.com/ Order allow,deny Satisfy any Order allow,deny Order deny,allow Require valid-user Satisfy all 

    o forse

     # same as above, but with longest matching path last ProxyPass http://backend.com/ Order allow,deny Satisfy any Order deny,allow Require valid-user Satisfy all Order allow,deny 

    o qualcosa del tutto diverso.

    Grazie per il tuo aiuto, sono veramente confuso.

    One Solution collect form web for “Come Apache unisce le sezioni di località più corrispondenti”

    Secondo i documenti , l'ordine di fusione è riportto nella tabella seguente. I miei test indicano che accumula le direttive, con l'ultima vincita. (* ProxyPass viene trattato in modo diverso, vedi nota alla fine)

    1. <Directory> (ad exception delle espressioni regolari) e .htaccess eseguite contemporaneamente (con .htaccess, se consentito, intriggersto <Directory>)
    2. <DirectoryMatch> (e <Directory ~>)
    3. <File> e <FileMatch> eseguiti contemporaneamente
    4. <Location> e <LocationMatch> eseguiti contemporaneamente

    Oltre a <Directory>, each gruppo viene elaborato nell'ordine in cui appaiono nei file di configuration.

    Quindi, la Location sovrascrive Files , che sovrascrive DirectoryMatch , con routes che corrispondono a Directory alla priorità più bassa. Quindi nel tuo esempio sopra, una richiesta a /sub/foobar corrisponderebbe alla prima posizione 3 in ordine, quindi l'ultima vince per direttive in conflitto.

    Quindi dal tuo esempio sopra;

     <Location / > ProxyPass http://backend.com/ Order allow,deny Satisfy any </Location> <Location /sub/foo> Order allow,deny </Location> <Location /sub > Order deny,allow Require valid-user Satisfy all </Location> <Location /doesnt/match > ProxyPass ! </Location> 

    va a ….

      ProxyPass http://backend.com/ Order allow,deny Satisfy any Order allow,deny Order deny,allow Require valid-user Satisfy all ProxyPass ! <--- not matches 

    che va a;

      ProxyPass http://backend.com/ Order deny,allow Require valid-user Satisfy all 

    (Hai ragione che non è chiaro dai documenti come si risolvono alcuni dei casi di bordi, è ansible che qualsiasi allow from * direttive di tipo allow from * sia connesso all'ordine associato Order allow,deny , ma non l'ho testata. cosa succede se si corrisponde a Satisfy Any ma hai già raccolto un Allow from * …)

    nota interessante su ProxyPass

    Solo per essere fastidioso, ProxyPass sembra funzionare nell'altra direzione …. 😉 In pratica colpisce la prima partita, quindi si ferma e usa quello!

     Ordering ProxyPass Directives The configured ProxyPass and ProxyPassMatch rules are checked in the order of configuration. The first rule that matches wins. So usually you should sort conflicting ProxyPass rules starting with the longest URLs first. Otherwise later rules for longer URLS will be hidden by any earlier rule which uses a leading substring of the URL. Note that there is some relation with worker sharing. For the same reasons exclusions must come before the general ProxyPass directives. 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.