Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > curl post - ошибка 504


Автор: jone31 14.2.2015, 20:45
вообще такая ситуация:
есть внутренний ресурс куда нужно отправлять уведомления от QIWI. к нему не привязан домен, это просто белый IP.

но т.к. требуется https, на домене сайта(https) сделан скрипт который "проксирует" их на внутренний ресурс.
т.е. запросы поступает на скрипт по https и он их перенаправляет на другой IP по http.
сам скрипт для "проксирования" запросов:
Код

test.php
<?PHP
function post($url, $data=array()){
        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL, $url); 
        curl_setopt($ch, CURLOPT_POST, 1); 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
        $res = curl_exec($ch);
        if(curl_error($ch)){ echo 'Error '.curl_errno($ch).': '.curl_error($ch); }
        curl_close($ch);
        return $res;
    }
    $t = post('http://x.x.x.x:1462/qiwi.php', $_POST);
    echo $t;
    exit();
?>

вроде все просто и должно работать.

при прямом запросе на http://x.x.x.x:1462/qiwi.php - работает корректно и ответ получен.
при запросе к test.php по https без параметров - скрипт пересылает корректно, ответ получает.
при запросе к test.php по https с POST - скрипт подвисает минут на 15-20 и выдает 504 ошибку.
в логах сайта вижу это:
Код

2015/02/14 18:54:25 [error] 1162#0: *5520 upstream prematurely closed connection while reading response header from upstream, 
client: x.x.x.x, server: site_name.ru, request: "POST /test.php HTTP/1.1", upstream: "http://127.0.0.1:8081/test.php", host: "www.site_name.ru"
2015/02/14 19:07:50 [error] 1165#0: *5540 upstream timed out (110: Connection timed out) while reading response header from upstream, 
client: x.x.x.x, server: site_name.ru, request: "POST /test.php HTTP/1.1", upstream: "http://127.0.0.1:8081/test.php", host: "www.site_name.ru"

в логах внутреннего сервера вижу что до него запрос вообще не дошел.

test.php работает на nginx + apache.

не могу понять в чем может быть причина такого поведения и куда дальше копать...

Добавлено @ 20:59
сами post данные небольшие, например: "eshopId=2082622219&paymentId=221232083270875&eshopAccount=RU0045436412211&
recipientAmount=1.00&recipientCurrency=RUR&paymentStatus=3&[email protected]&[email protected]&
paymentData=2015-02-02+22%3a23%3a01&orderId=3321747171&serviceName=12312&hash=012701fcb7f4b07b94a669f59cc7398c48
&invoiceId=21059325580&
payerAccount=RU42213312195&paymentAmount=1.00&paymentCurrency=RUR&rupay_payment_sum=1.00&rupay_payment_currency=RUR
&paymentMethod=CardPayment&merchantPaymentAmount=0.96"

Автор: Сумасшедший 23.2.2015, 11:47
А конфиги веб-серверов в чём различаются?

Автор: jone31 23.2.2015, 22:52
Цитата(Сумасшедший @  23.2.2015,  11:47 Найти цитируемый пост)
А конфиги веб-серверов в чём различаются? 

внешний это vds с конфигами по умолчанию.

на внутреннем сервере стоит apache, но все конфиги закрыты и какие там настройки неизвестно.

пробовал запустиь curl скрипт из консоли php - результат тот же.


Автор: Сумасшедший 24.2.2015, 20:40
Вэдээс вэдээсу вэдээс) Даже в разных сборках линукса дефолтные конфиги отличаются. Просто подозрение что nginx, если это он обслуживает https не туда проксирует.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)