2015-03-16 2 views
1

S'il vous plaît aidez-moi. J'ai un serveur iis et un proxy nginx dessus. Quand je me connecte à mon nginx je reçois parfois 400 Bad Request (Invalid hostname) erreur et quand je appuie sur F5 et recharger la page mon site de chargement correct (200 code) mais sans scripts \ css ... et quand je presse F5 angain erreur 400 et bientôt.Nginx à iis renvoi Erreur 400

sur iis http://localhost:81

J'ai essayé avec deux configs nginx:

Première

location/{ 
      proxy_pass http://localhost:81; 
      proxy_set_header Host   $host; 
      proxy_set_header X-Real-IP  $remote_addr; 
      proxy_set_header X-Forwarded-for $remote_addr; 
      port_in_redirect off; 
      proxy_connect_timeout 300; 
     } 

Deuxième

location/{ 
      proxy_pass http://localhost:81; 
      proxy_set_header Host $host; 
      proxy_set_header X-Accel-Expires 0; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     } 

Les deux première et la seconde configuration ont cette erreur. Nginx de la version 1.6.2.

Nginx error.log est vide. Nginx journal d'accès comme celui-ci

217.66.152.89 - - [16/Mar/2015:23:42:56 +0300] "GET/HTTP/1.1" 400 334 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36" 
217.66.152.89 - - [16/Mar/2015:23:42:58 +0300] "GET/HTTP/1.1" 200 689 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36" 
217.66.152.89 - - [16/Mar/2015:23:43:01 +0300] "GET/HTTP/1.1" 400 334 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36" 
217.66.152.89 - - [16/Mar/2015:23:43:03 +0300] "GET/HTTP/1.1" 200 689 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36" 

journaux ont iis seulement 200 et 304 codes

têtes de requête

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 
Cache-Control:max-age=0 
Connection:keep-alive 
Cookie:mode=undefined; view=undefined 
Host:(this is my host) 
If-Modified-Since:Mon, 16 Mar 2015 12:56:48 GMT 
If-None-Match:"4e905caae85fd01:0" 
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36 

J'espère que pour votre aide.

Répondre

1

A eu le même problème. Cela était dû au fait que le nom DNS du serveur était en train de se résoudre en une adresse IPv4 seulement, lorsque "localhost" avait à la fois IPv4 et IPv6. Lorsque NGINX a tenté de résoudre un "http://localhost" en amont, il obtenait ":: 1" et passait en IPv6 - mais HTTP.SYS (couche réseau IIS pour des raisons de discussion) obtenait plus tard une adresse IPv4 pour le nom spécifié dans un en-tête "Host:".

Cette situation n'est pas gérée correctement, en dépit du fait que le nom symbolique "localhost", adresse IPv4 et ":: 1" IPv6 appartiennent à la même machine. Solution: supprimez la directive proxy_set_header Host $host; ou utilisez l'adresse numérique amont dans proxy_pass URI.