2015-03-16 5 views
1

Пожалуйста, помогите мне. У меня есть сервер iis и прокси-сервер nginx. Когда я подключился к моему nginx, я иногда получаю ошибку 400 Bad Request (Invalid hostname) и когда я нажимаю F5 и перезагружаю страницу, загружающую мой сайт правильно (код 200), но без скриптов \ css ... и когда я нажимаю F5 angain 400 error и скоро.Nginx to iis forwarding Ошибка 400

Iis на http://localhost:81

Я попытался с двумя Nginx конфиги:

Первый

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; 
     } 

Второй

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; 
     } 

И первый и второй конфигурации эта ошибка. Версия Nginx версии 1.6.2.

Nginx error.log пуст. Nginx журнал доступа как этот

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" 

Iis журналы имеют только 200 и 304 кодов

заголовков запроса

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 

Я надеюсь на вашу помощь.

ответ

1

Был такой же вопрос. Это было вызвано тем, что DNS-имя сервера разрешалось только на адрес IPv4, когда «localhost» имел как IPv4, так и IPv6.

Когда NGINX попытался разрешить восходящий поток «http://localhost», он получал «:: 1» и переключился на IPv6, но HTTP.SYS (сетевой уровень IIS для обсуждения) позже получил IPv4-адрес для указанного имени в заголовке «Host:».

Эта ситуация неправильно обрабатывается, несмотря на то, что символическое имя, «localhost», IPv4-адрес и «:: 1» IPv6 фактически принадлежат одной машине.

Обходное решение - удалите proxy_set_header Host $host; директиву или используйте числовой адрес восходящего потока в proxy_pass URI.