Il server Web serve casualmente vari vhost

Abbiamo nginx in esecuzione su Ubuntu Trusty. Serve diversi siti web su https, in esecuzione su un indirizzo IP.

Casualmente, anche se sembra leggermente correlato al carico di lavoro, talvolta le richieste singole si manifestano sul vhost sbagliato. Ciò port a richieste su lustrum.thalia.nu essere serviti da thalia.nu e viceversa. Questo dà poi pagine di errori brutto perché gli utenti finiscono improvvisamente su un sito web diverso. Quando si preme F5 , gli utenti tornano all'objective originale.

Non sembra che il browser o il sistema operativo siano correlati. È stato confermato che su Firefox (Linux, Windows, Mac), Edge (Windows) e Chrome (Linux, Windows, Android) e Safari (iOS).

Il problema sembra accadere più frequentemente quando il sistema viene messo sotto carico, suggerendo una sorta di condizione di gara.

lustrum.thalia.nu

 server { server_name lustrum.thalia.nu; listen 443 ssl; ssl on; ssl_certificate /etc/nginx/certs/lustrum.thalia.nu.crt; ssl_certificate_key /etc/nginx/certs/lustrum.thalia.nu.key; add_header Strict-Transport-Security "max-age=63072000; preload"; root /var/www/thalia-lustrum/public_html; location / { index index.php; try_files $uri $uri/ /index.php?$args; } # Add trailing slash to */wp-admin requests. rewrite /wp-admin$ $scheme://$host$uri/ permanent; # Pass all .php files onto a php-fpm/php-fcgi server. location ~ [^/]\.php(/|$) { include /etc/nginx/fastcgi_params; fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass unix:/var/run/php5-fpm-thalia-lustrum.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /public_html$fastcgi_script_name; } } 

thalia.nu

 server { server_name thalia.nu; listen 443 ssl; ssl on; ssl_certificate /etc/nginx/certs/www.thalia.nu.crt; ssl_certificate_key /etc/nginx/certs/www.thalia.nu.key; add_header Strict-Transport-Security "max-age=63072000; preload"; root /var/www/thalia/public_html; location / { try_files $uri $uri/ /index.php/$request_uri; index index.php index.html index.htm; } location ~ \.php($|/) { include /etc/nginx/fastcgi_params; set $script $uri; set $path_info ""; if ($uri ~ "^(.+\.php)(/.+)") { set $script $1; set $path_info $2; } fastcgi_read_timeout 120; fastcgi_pass unix:/var/run/php5-fpm-thalia-www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /public_html$fastcgi_script_name; } } 

Come potete vedere, stiamo eseguendo diverse piscine PHP5-FPM per questi due domini. Queste piscine vengono chrootate in cartelle diverse e vengono eseguite come utenti diversi. La configuration di PHP-FPM è altrimenti abbastanza standard per quanto posso dirlo.

Abbiamo provato sia nginx 1.4.6-ubuntu3 che nginx 1.8.0-1 + affidabili.

Telemetria del log

 266.266.266.266 - - [25/Nov/2015:09:24:40 +0100] "GET /committees/175 HTTP/1.1" 302 5 "https://thalia.nu/committees" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0" Host: "thalia.nu" Location: "https://thalia.nu/index.php//committees/wp-admin/setup-config.php" 

In questa row si può vedere che la richiesta per la pagina /committees viene improvvisamente reindirizzata a wp-admin . Ciò sembra che la richiesta per /committees stata gestita dal thalia-lustrum PHP-fpm …

File di zona DNS

Non vediamo come questo possa essere rilevante, ma …

 ;; MX Records thalia.nu. 300 IN MX 20 relay.transip.nl. thalia.nu. 300 IN MX 10 ivo.thalia.nu. ;; TXT Records thalia.nu. 300 IN TXT "v=spf1 a mx a:mulgore.hexon-is.nl a:moonray.hexon-is.nl a:fred.thalia.nu a:ivo.thalia.nu ~all" ;; SPF Records (Sender Policy Framework) thalia.nu. 300 IN SPF "v=spf1 a mx a:mulgore.hexon-is.nl a:moonray.hexon-is.nl a:fred.thalia.nu a:ivo.thalia.nu ~all" ;; CNAME Records lustrum.thalia.nu. 300 IN CNAME thalia.nu. ;; A Records (IPv4 addresses) thalia.nu. 300 IN A 131.174.31.8 www.thalia.nu. 300 IN A 131.174.31.8 ivo.thalia.nu. 300 IN A 131.174.31.8 

  • Apache non rispetta la direttiva ServerName per un determinato sito
  • Domini multipli Nginx
  • Come posso utilizzare il DocumentRoot e lo stato del server all'interno di un host virtuale Apache?
  • Esistono strumenti per il monitoraggio dei singoli host Apache in tempo reale?
  • Apache SSL configuration - Metodo non valido in request \ x16 \ x03 \ x01
  • Come utilizzare VirtualBox come un router senza NAT tra due sottoreti?
  • Impostazione di httpd-vhosts.conf per più host virtuali
  • Più porte su Apache2
  • 3 Solutions collect form web for “Il server Web serve casualmente vari vhost”

    Dopo ore di debug di questo problema siamo finalmente riusciti a rintracciarlo alla causa. Sembra che la causa non sia nginx , ma PHP-fpm. Stiamo eseguendo php5-fpm versione 5.5.9-1ubuntu4.14 . Sembra che quando si forzino nuovi lavoratori, qualcosa a volte va storto e i lavoratori eseguono (parte?) Del codice di lavoratori diversi.

    La nostra soluzione era quella di copiare /etc/php5/fpm/php5-fpm.conf su copie diverse con le proprie cartelle pool.d , quindi copiare /etc/init.d/php5-fpm per lanciare con il nuovo file di configuration (anche creazione di file in /etc/init/ ). Ciò significa che abbiamo ora un gestore di processi php5-fpm per pool. Avere separato le chiacchiere e le prese non sembrano mantenere le cose abbastanza separate.

    Nginx support SNI? È ansible eseguire nginx -V e dovrebbe vedere qualcosa come supporto TLS SNI abilitato. Se non lo fai, forse perché il nome host viene inviato dopo la stretta di mano e suppongo di avere un certificato wildcard per * .thalia.nu

    Sembra che il certificato non sia giusto: firefox mi sta dicendo che viene rilasciato per http://www.thalia.nu, non thalia.nu.

    Questo è IMHO ciò che sta causando problemi. Provare con un altro certificato o provare ad triggersre le connessioni HTTP senza SSL.

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