2017-09-02 2 views
0

J'ai mis en place l'équilibrage de charge avec nginx et apache. le nginx est un proxy inverse et il y a 2 serveurs web Apache dans 2 systèmes séparés.pourquoi dans load-balancer avec nginx, il ne trouve pas de fichiers dans d'autres serveurs?

dans ma machine, quand je demande localhost, cela fonctionne correctement. mais si je demande un fichier (par exemple info.php) qui est disponible dans 2 autres serveurs, il ne peut pas le trouver et toutes les fois qu'il me montre le fichier local info.php et ne montre jamais sur d'autres serveurs. si je supprime ce fichier (info.php) de ma machine, il me montre erreur 404.

ceci est mes paramètres nginx:

upstream localhost { 
    ip_hash; 
    server 1.2.3.4; 
    server 1.2.3.5;  
} 
server { 
     listen 80; 
     listen [::]:80; 
     root /var/www/html; 
     index index.php index.html index.htm index.nginx-debian.html; 
     server_name localhost; 
     location/{ 
      try_files $uri $uri/ =404; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_redirect off; 
      proxy_pass http://localhost; 
    } 

    location ~ \.php$ { 
    include snippets/fastcgi-php.conf; 
    fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
} 

location ~ /\.ht { 
    deny all; 
} 

} 

le fichier info.php est disponible sur 2 autres serveurs.

Répondre

0

Tout d'abord, n'utilisez pas localhost pour votre nom en amont. Pourquoi voulez-vous confondre un localhost (machine actuelle) avec un hôte local en amont. Utilisez ci-dessous

upstream myservers { 
    ip_hash; 
    server 1.2.3.4; 
    server 1.2.3.5;  
} 
server { 
     listen 80; 
     listen [::]:80; 
     root /var/www/html; 
     index index.php index.html index.htm index.nginx-debian.html; 
     server_name localhost; 
     location/{ 
      try_files $uri $uri/ =404; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_redirect off; 
      proxy_pass http://myservers; 
    } 

    location ~ \.php$ { 
    include snippets/fastcgi-php.conf; 
    fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
} 

location ~ /\.ht { 
    deny all; 
} 

} 
+0

je l'ai changé comme vous le dites, mais maintenant il faut environ 60 secondes pour charger la page d'index de apache, et même que précédemment, il ne peut pas montrer info.php fichier sur d'autres serveurs. – msln

+0

Pourquoi afficherait-il 'info.php'? Votre 'location ~ \ .php $ {' envoie spécifiquement chaque requête PHP à 'fastcgi_pass unix: /run/php/php7.0-fpm.sock;' –

+0

alors, que dois-je écrire à la place? juste commenter ou écrire quelque chose d'autre? – msln