天天看點

nginx+php下curl請求https報502錯

在做公司項目的時候使用了第三方的API接口,且接口采用的是https請求,在本地的wamp內建環境開發測試正常,放到伺服器上結果報錯 nginx 502 bad gateway。在論壇中爬樓了幾天今天終于找到原因,php版本問題;

公司項目線上環境:

伺服器安裝了wdcp其中nginx是1.4.2版本 php是5.2.17版本

部署項目上去後,怎麼運作都報502錯,剛開始懷疑是nginx配置問題,百度了許久說請求https需要ssl于是配置了nginx的ssl後問題依舊,無奈隻好繼續搜尋答案。

這是在wdcp論壇找到的php更新5.3腳本:

wget http://down.wdlinux.cn/in/php_up53.sh

sh php_up53.sh

---------------------------------------------

問了找到nginx 502 bad gateway錯誤,于是乎在本地伺服器安裝了wdcp進行測試。

1、安裝wdcp,建立網站項目;

2、編寫測試代碼,index.php;

<?php
// 初始化一個 cURL 對象
$curl = curl_init();
// 剛開始抓取了https://github.com,但是頁面彈框,後來改用抓取支付寶首頁測試
curl_setopt($curl, CURLOPT_URL, 'https://www.alipay.com');
// 設定header
curl_setopt($curl, CURLOPT_HEADER, 1);
// 設定cURL 參數,要求結果儲存到字元串中還是輸出到螢幕上
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 運作cURL,請求網頁資料
$data = curl_exec($curl);
// 關閉cURL請求
curl_close($curl);
// 列印出抓取的測試資料
var_dump($data);
           

3、浏覽器請求頁面 www.test.cn (這裡www.test.cn是虛拟域名配置hosts來的)結果報錯502

4、tail -f /www/wdlinux/nginx/logs/error.log檢視請求錯誤日志,從日志看是上遊過早關閉連接配接。。。。(什麼意思)

*59 upstream prematurely closed connection while reading response header from upstream, client: 192.168.0.102, server: test.cn, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:88/", host: "www.test.cn"
           

5、百度 在wdcp論壇爬樓到一篇文章,說要更新PHP版本,并提供了更新腳本 php_up53.sh于是更新結果就真的就好了。

---------------------------------------

雖然目前好不知道問什麼,但是先記錄下nginx下的php函數curl請求Https報錯502更新php到5.3以上包括5.3即可。