2014-10-09 1365 views
2

我有nginx的CONF如下:Nginx的代理通 - 禁用IPv6

server { 
listen  127.0.0.1:8080; 
server_name 127.0.0.1; 

client_max_body_size 20m; 

include /etc/nginx/conf.d/services/*.conf; 

# redirect server error pages to the static page /50x.html                                    
#                                                  
error_page 500 /500.json; 
error_page 501 /501.json; 
error_page 502 /502.json; 
error_page 503 /503.json; 
error_page 504 /504.json; 
error_page 404 /404.json; 

location = /500.json { 
    root /opt/lj/nginx; 
} 
location = /501.json { 
    root /opt/lj/nginx; 
} 
location = /502.json { 
    root /opt/lj/nginx; 
} 
location = /503.json { 
    root /opt/lj/nginx; 
} 
location = /504.json { 
    root /opt/lj/nginx; 
} 
location = /404.json { 
    root /opt/lj/nginx; 
} 
} 

在conf.d /服務目錄,我有一個文件:

location /api/auth {proxy_pass  http://127.0.0.1:8081;} 

我具有上游處理聽取8081的請求。幾乎準確地2我們的3倍,該請求被重定向適當的,但每次第三次,我得到這個錯誤:

2014/10/09 03:03:52 [alert] 4572#0: *16 socket() failed (97: Address family not supported by protocol) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /api/auth/1.0/companies/1/clients HTTP/1.1", upstream: "http://[::1]:8081/api/auth/1.0/companies/1/clients", host: "localhost:8080" 

我不知道如何讓Nginx的只轉發到上游理解IPv4地址。

訪問日誌:(請注意:1出3個結果500,其餘通)

127.0.0.1 - portalAdmin [09/Oct/2014:02:56:37 -0400] "GET /api/auth/1.0/companies/1/clients HTTP/1.1" 500 107 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" "98.207.234.244" 
127.0.0.1 - portalAdmin [09/Oct/2014:02:57:38 -0400] "GET /api/auth/1.0/companies/1/clients HTTP/1.1" 200 2 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" "98.207.234.244" 
127.0.0.1 - portalAdmin [09/Oct/2014:02:57:39 -0400] "GET /api/auth/1.0/companies/1/clients HTTP/1.1" 200 2 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" "98.207.234.244" 
127.0.0.1 - portalAdmin [09/Oct/2014:02:57:41 -0400] "GET /api/auth/1.0/companies/1/clients HTTP/1.1" 500 107 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" "98.207.234.244" 
127.0.0.1 - portalAdmin [09/Oct/2014:03:03:44 -0400] "GET /api/auth/1.0/companies/1/clients HTTP/1.1" 200 2 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" "98.207.234.244" 
127.0.0.1 - portalAdmin [09/Oct/2014:03:03:45 -0400] "GET /api/auth/1.0/companies/1/clients HTTP/1.1" 200 2 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" "98.207.234.244" 
127.0.0.1 - portalAdmin [09/Oct/2014:03:03:46 -0400] "GET /api/auth/1.0/companies/1/clients HTTP/1.1" 500 107 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" "98.207.234.244" 
127.0.0.1 - portalAdmin [09/Oct/2014:03:03:50 -0400] "GET /api/auth/1.0/companies/1/clients HTTP/1.1" 200 2 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" "98.207.234.244" 
127.0.0.1 - portalAdmin [09/Oct/2014:03:03:51 -0400] "GET /api/auth/1.0/companies/1/clients HTTP/1.1" 200 2 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" "98.207.234.244" 
127.0.0.1 - portalAdmin [09/Oct/2014:03:03:52 -0400] "GET /api/auth/1.0/companies/1/clients HTTP/1.1" 500 107 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" "98.207.234.244" 

任何幫助將不勝感激!謝謝。

+0

嗨,很抱歉,我在哪裏可以找到ports.conf文件 – 2014-10-09 23:29:36

+0

這不可能是整個配置。還請看包含的文件。 – 2014-10-10 01:04:49

回答

5

也許你的配置中某處有「localhost」而不是「127.0.0.1」。您可以指定解析器並將ipv6設置爲關閉。

resolver 8.8.8.8 4.2.2.2 ipv6=off; 

如果您的端口8081上的webservice也在nginx上,那麼啓用IPv6可以解決此問題。

server { 
    listen 8081; 
    listen [::]:8081; 
    .... 
}