Nginx到iis转发错误400

Dmi*_*tin 3 iis asp.net-mvc forwarding http nginx

请帮我.我有iis服务器和nginx代理.当我连接到我的nginx时,我得到有时400错误请求(无效主机名)错误,当我按F5并重新加载页面我的网站加载正确(200代码)但没有脚本\ css ...当我按F5 angain 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;
        }
Run Code Online (Sandbox Code Playgroud)

第二

 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;
        }
Run Code Online (Sandbox Code Playgroud)

第一个和第二个配置都有此错误.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"
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我希望得到你的帮助.

Dmi*_*tov 8

有同样的问题.这是因为当"localhost"同时具有IPv4和IPv6时,服务器DNS名称仅解析为IPv4地址.

当NGINX尝试解析上游" http:// localhost "时,它获得了":: 1"并切换到IPv6 - 但HTTP.SYS(IIS网络层为了讨论)后来获得了指定名称的IPv4地址在"主机:"标题中.

尽管符号名称"localhost",IPv4地址和":: 1"IPv6实际上属于同一台机器,但这种情况没有得到妥善处理.

解决方法 - 删除proxy_set_header Host $host;指令或在proxy_passURI中使用数字上游地址.