ho un problema con la configurazione di un VH su Centos con Apache.
E' un sito che ho lavorativamente "ereditato" e che al momento devo mantenere cosi come è. Sulla macchina Centos ci sono un bel po di Virtual Host, tutti con la stessa forma
- Codice: Seleziona tutto
# The virtual host configuration for my.website.com
#<Directory "/var/www/my.website.com/html">
<Directory "/var/www/my.website.com/html">
Order allow,deny
Allow from all
AllowOverride Limit FileInfo Indexes
</Directory>
<Files ~ ".passwd">
Order allow,deny
Deny from all
</Files>
<Virtualhost *:80>
ServerName newlookandfeel.mycustomer.com
ServerAlias newlookandfeel.mycustomer.com
DocumentRoot /var/www/my.website.com/html
ErrorLog logs/mycustomer-error_log
CustomLog logs/mycustomer-access_log common
RewriteEngine On
RewriteLog "/var/log/httpd/rewrite.log"
RewriteLogLevel 1
ProxyPreserveHost On
</VirtualHost>
Poi nel folder /var/www/my.website.com/html ho un file php che carica le varie configurazioni dei clienti
- Codice: Seleziona tutto
class ConfigLoader
{
/**
* Determine URL used for accessing the page and load proper config file
* @return
*/
public static function loadConfiguration()
{
$server = $_SERVER['SERVER_NAME'];
switch($server)
{
case 'newlookandfeel.mycustomer.com':
require_once 'lookandfeel/mycustomer.php';
break;
case 'lookandfell.anothercustomer.com':
require_once 'lookandfeel/anothercustomer.php';
break;
...... and so on
default:
require_once 'lookandfeel/default.php';
break;
Qualche giorno fa abbiamo ricevuto una richiesta da un cliente per una nuova configurazione. Il cliente si è registrato il dominio e lo ha fatto puntare all'indirizzo pubblico del front end.
Ho creato il VH usando il solito template, ho creato la configurazione, ma mi carica sempre e solo la configurazione di default.
Se vado in tail sul file /etc/httpd/logs/access_log vedo che la richiesta mi arriva come
- Codice: Seleziona tutto
XX.XX.XX.XX - - [25/Nov/2019:07:42:40 +0000] "GET / HTTP/1.1" 200 3379 "http://newlookandfell.mycustomer.com/" "Mozilla/5.0 (Windows NT 10.0;WOW64; Trident/7.0; rv:11.0) like Gecko"
Ma se mi faccio stampare da PHP la variabile $server ottengo l'indirizzo IP pubblico. Quindi lo switch del file php riceve una variabile sbagliata e non funziona correttamente.
Per il momento ho messo una pezza modificando il file php con lo switch, ma non può essere la soluzione definitiva, devo capire perche mi arriva l'IP e non il server name.
Qualcuno sa darmi qualche dritta?
Grazie