Uso e nozioni di base sulle variabili

Descrizione

Questo documento illustra come sfruttare la potenza delle variabili nel server web Apache e nei file di configurazione del modulo dispatcher.

Variabili

Apache supporta le variabili e dalla versione 4.1.9 del modulo dispatcher le supporta anche!

Possiamo sfruttarli per fare una serie di cose utili come:

  • Assicurati che tutto ciò che è specifico per l'ambiente non sia in linea nelle configurazioni ma estratto per assicurarsi che i file di configurazione da dev funzionino in prod con lo stesso output funzionale.
  • Attiva/disattiva le funzionalità e modifica i livelli di registro dei file immutabili forniti da AMS e non consente di modificare.
  • Modifica che include da utilizzare in base a variabili come RUNMODE e ENV_TYPE
  • Confronta i nomi DNS DocumentRoot e VirtualHost tra le configurazioni Apache e le configurazioni del modulo.

Risoluzione



Utilizzo delle variabili della linea di base



 


Poiché i file della linea di base AMS sono di sola lettura e non modificabili, sono disponibili funzioni che possono essere disattivate e attivate e configurate modificando le variabili utilizzate.




 

Variabili della linea di base



 


Ecco un esempio del contenuto del file /etc/httpd/conf.d/variables/ams_default.vars





 



1
2
3
4
5
Define DISP_LOG_LEVEL info Define AUTHOR_WHITELIST_ENABLED 0 Define PUBLISH_WHITELIST_ENABLED 0 Define AUTHOR_FORCE_SSL 1 Define PUBLISH_FORCE_SSL 0






 

Esempio 1 - Forza SSL



 


Variabili mostrate sopra AUTHOR_FORCE_SSLoppure PUBLISH_FORCE_SSL può essere impostato su 1 per attivare le regole di riscrittura che obbligano gli utenti finali che accedono a una richiesta http a essere reindirizzati a https

Di seguito è riportata la sintassi del file di configurazione che consente il funzionamento di questo interruttore:





 



1
2
3
4
5
6
7
8
/VirtualHost *:80      IfModule mod_rewrite.c          ReWriteEngine    on          If "${PUBLISH_FORCE_SSL} == 1"              Include /etc/httpd/conf.d/rewrites/forcessl_rewrite.rules          /If      /IfModule /VirtualHost






 


Come puoi vedere le regole di riscrittura includono ciò che ha il codice per reindirizzare il browser degli utenti finali, ma la variabile impostata su 1 è ciò che consente o meno l'utilizzo del file




 

Esempio 2 - Livello di registrazione



 


Le variabili DISP_LOG_LEVEL può essere utilizzato per impostare ciò che si desidera per il livello di log effettivamente utilizzato nella configurazione in esecuzione.

Di seguito è riportato un esempio di sintassi presente nei file di configurazione della linea di base ams:





 



1
2
3
4
IfModule disp_apache2.c      DispatcherLog    logs/dispatcher.log      DispatcherLogLevel ${DISP_LOG_LEVEL} /IfModule






 


Se hai bisogno di aumentare il livello di log del dispatcher, devi solo aggiornare la variabile ams_default.vars DISP_LOG_LEVEL al livello desiderato.

I valori di esempio possono essere un numero intero o una parola:




 

Livello di log Valore intero Valore Word
Traccia 4 traccia
Debug 3 debug
Info 2 info
Avvertenza 1 avvertire
Errore 0 error




 

Esempio 3 - Elenchi consentiti



 


Le variabili AUTHOR_WHITELIST_ENABLED e PUBLISH_WHITELIST_ENABLED può essere impostato su 1 per attivare regole di riscrittura che includono regole che consentono o impediscono il traffico degli utenti finali in base all’indirizzo IP.  L’attivazione di questa funzione deve essere combinata con la creazione di un file di regole della whitelist da includere.

Di seguito sono riportati alcuni esempi di sintassi di come la variabile abilita gli "include" dei file della whitelist e un esempio di file della whitelist

sample.vhost:





 



1
2
3
4
5
6
7
VirtualHost *:80      Directory /          If "${AUTHOR_WHITELIST_ENABLED} == 1"              Include /etc/httpd/conf.d/whitelists/*_whitelist.rules          /If      /Directory /VirtualHost






 


sample_whitelist.rules:





 



1
2
3
RequireAny    Require ip 10.43.0.10/24 /RequireAny






 


Come puoi vedere la sample_whitelist.rules applica la restrizione IP, ma l’attivazione della variabile ne consente l’inclusione nella variabile sample.vhost




 

Dove collocare le variabili



 

Argomenti di avvio del server web



 


AMS inserirà le variabili globali negli argomenti di avvio del processo Apache all’interno del file /etc/sysconfig/httpd

Questo file ha variabili predefinite come mostrato qui:





 



1
2
3
4
5
6
7
8
AUTHOR_IP="10.43.0.59" AUTHOR_PORT="4502" AUTHOR_DOCROOT='/mnt/var/www/author' PUBLISH_IP="10.43.0.20" PUBLISH_PORT="4503" PUBLISH_DOCROOT='/mnt/var/www/html' ENV_TYPE='dev' RUNMODE='dev'






 


Non si tratta di qualcosa che puoi modificare, ma è utile da sfruttare nei file di configurazione

Nota:

A causa del fatto che questo file viene incluso solo all'avvio del servizio.  Per rilevare le modifiche è necessario riavviare il servizio.  Ciò significa che un ricaricamento non è sufficiente, ma è necessario riavviare il sistema





 

File variabili (.vars)



 


Le variabili personalizzate fornite dal codice devono essere presenti in .vars file all’interno della directory /etc/httpd/conf.d/variables/

Questi file possono avere qualsiasi variabile personalizzata desiderata e alcuni esempi di sintassi possono essere visualizzati nei seguenti file di esempio

/etc/httpd/conf.d/variables/weretail_domains_dev.vars:





 



1
2
Define WERETAIL_DOMAIN dev.weretail.com Define WERETAIL_ALT_DOMAIN dev.weretail.net






 


/etc/httpd/conf.d/variables/weretail_domains_stage.vars





 



1
2
Define WERETAIL_DOMAIN stage.weretail.com Define WERETAIL_ALT_DOMAIN stage.weretail.net






 


/etc/httpd/conf.d/variables/weretail_domains_prod.vars:





 



1
2
Define WERETAIL_DOMAIN www.weretail.com Define WERETAIL_ALT_DOMAIN www..weretail.net






 


Quando crei le tue variabili, denominale in base al loro contenuto e per seguire gli standard di denominazione forniti nel manuale qui.  Nell’esempio precedente puoi vedere che il file delle variabili ospita le diverse voci DNS come variabili da utilizzare nei file di configurazione.




 

Utilizzo delle variabili



 


Ora che hai definito le variabili all'interno dei file delle variabili, vuoi sapere come usarle correttamente all'interno degli altri file di configurazione.

Utilizzeremo i file .vars di esempio di cui sopra per illustrare un caso d’uso corretto.

Vogliamo includere globalmente tutte le variabili basate sull'ambiente e creeremo il file /etc/httpd/conf.d/000_load_env_vars.conf





 



1
2
Include /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars Include /etc/httpd/conf.d/variables/*_${RUNMODE}.vars






 


Sappiamo che all’avvio del servizio httpd estrae le variabili impostate da AMS in /etc/sysconfig/httpd e ha l'insieme di variabili ENV_TYPE e RUNMODE

Quando questo file .conf globale viene estratto, verrà estratto in anticipo perché l'ordine di inclusione dei file in conf.d è alfanumerico ordine di caricamento significa 000 nel nome del file assicurerà che venga caricato prima degli altri file nella directory.

L’istruzione include utilizza anche una variabile nel nome del file.  Questo può cambiare il file che verrà effettivamente caricato in base al valore presente nelle variabili ENV_TYPE e RUNMODE.

Se la ENV_TYPE value is dev quindi il file che viene utilizzato è:

/etc/httpd/conf.d/variables/weretail_domains_dev.vars

Se la ENV_TYPE value is stadio quindi il file che viene utilizzato è:

/etc/httpd/conf.d/variables/weretail_domains_stage.vars

Se il valore RUNMODE è anteprima quindi il file che viene utilizzato è:

/etc/httpd/conf.d/variables/weretail_domains_preview.vars

Quando quel file viene incluso, ci permetterà di utilizzare i nomi delle variabili memorizzati all'interno.

Nel nostro /etc/httpd/conf.d/available_vhosts/weretail.vhost file possiamo cambiare la normale sintassi che funzionava solo per dev:





 



1
2
3
VirtualHost *:80      ServerName    dev.weretail.com      ServerAlias    dev.weretail.net






 


Con una nuova sintassi che utilizza il potere delle variabili per funzionare per dev, stage e prod:





 



1
2
3
VirtualHost *:80      ServerName    ${WERETAIL_DOMAIN}      ServerAlias    ${WERETAIL_ALT_DOMAIN}






 


Nel nostro /etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any file possiamo cambiare la normale sintassi che funzionava solo per dev:





 



1
2
"dev.weretail.com" "dev.weretail.net"






 


Con la nuova sintassi che utilizza il potere delle variabili per funzionare per dev, stage e prod:





 



1
2
"${WERETAIL_DOMAIN}" "${WERETAIL_ALT_DOMAIN}"






 


Queste variabili hanno una grande quantità di riutilizzo per individuare le impostazioni in esecuzione senza dover disporre di file distribuiti diversi per ambiente.  In sostanza puoi modellare i file di configurazione con l’uso di variabili e includere file basati su variabili.

In questa pagina