Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с настройкой Nginx

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: куда копать?
NeuroZ
Отправлено: 19 Декабря, 2016 - 16:19:05
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Перенес сайт с одного сервера на другой.
При попытке отправить на него curl с другого сервера - получаю ошибку:
Цитата:
HTTP/1.1 400 Bad Request Server: nginx/1.10.2 Date: Mon, 19 Dec 2016 14:09:20 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: close

Как исправить?
(Добавление)
А с локальной машины отправляется запрос... Получается проблема именно в исходящем запросе с сервера на сервер.

(Отредактировано автором: 19 Декабря, 2016 - 16:29:27)

 
 Top
Sail
Отправлено: 20 Декабря, 2016 - 08:31:56
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




NeuroZ, вариантов много...
Например:
Описание 1
Описание 2
 
 Top
NeuroZ
Отправлено: 20 Декабря, 2016 - 09:28:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Sail пишет:
NeuroZ, вариантов много...
Например:
Описание 1
Описание 2

Понимаю что много... И гуглил много, но ничего, что подошло бы к моей проблеме...

Первый линк - для пользователй windows. У меня как раз из windows (local) на centos7 (server2) curl проходит без проблем.

Второй линк - тоже ближе к винде (куки, антивирусы и т.п.)

Моя же проблема возникает при curl с server1 на server2 (оба сервера облачные и хостятся у одного провайдера). Оба сервера на centos7. На обоих отключен файервол и нет запрещающих правил в iptables.

(Отредактировано автором: 20 Декабря, 2016 - 09:29:08)

 
 Top
NeuroZ
Отправлено: 22 Декабря, 2016 - 15:38:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Еще вот что стал наблюдать:

Смысл в том, что если послать 2 запроса (один за другим) на сайт. -
Второй запрос вернет 400 Bad Request.
Причем тесты показали, что проблема именно серверного характера, т.к.
если послать только второй запрос - он пройдет успешно.
Раньше этот код работал и проблем никаких не возникало, а сейчас
почему-то сервер стал блокировать запросы...
Вот примитивный пример кода:
PHP:
скопировать код в буфер обмена
  1. if ($curl = curl_init()) {
  2. curl_setopt($curl, CURLOPT_URL,
  3. 'http://site.ru/index.php?option=com_auto&task=1c.init');
  4. curl_setopt($curl, CURLOPT_POST, true);
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  6. curl_setopt($curl, CURLOPT_HEADER, true);
  7. echo $out = curl_exec($curl);
  8. echo '<br>';
  9. $return = explode("\n", $out);
  10. $cookie = $return[1] . '=' . $return[2];
  11. curl_setopt($curl, CURLOPT_URL,
  12. 'http://site.ru/index.php?option=com_auto&task=1c.upload');
  13. curl_setopt($curl, CURLOPT_COOKIE, $cookie);
  14. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  15. curl_setopt($curl, CURLOPT_POST, true);
  16. curl_setopt($curl, CURLOPT_HEADER, true);
  17. echo $out = curl_exec($curl);
  18. curl_close($curl);
  19. }

Причем если много раз обновлять страницу - первый запрос в любом случае выполняется.
А если поставить sleep(10) между запросами - то все равно второй запрос не выполнится

(Отредактировано автором: 22 Декабря, 2016 - 15:40:09)

 
 Top
NeuroZ
Отправлено: 24 Декабря, 2016 - 08:41:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Разобрался... Это был мой критичный косяк... Я добавил в ответ загаловки и... Получил баг из-за дебага.

Строка 6 curl_setopt($curl, CURLOPT_HEADER, true);
Строка 10 $cookie = $return[1] . '=' . $return[2];

Без дебага формирует правильную куку. С вклеченными заголовками нужные значения в массиве ответа смещаются, а текущие значения становятся пустыми.
Далее я передаю серверу
Строка 13 curl_setopt($curl, CURLOPT_COOKIE, $cookie);
И он возвращает 400 Bad Request.

P.s. Соответственно когда блокировал первый запрос - сразу же блокировал отправку кук (т.к. очевидно что их нет), в итоге не получал ошибку 400.
Получай молотком

(Отредактировано автором: 24 Декабря, 2016 - 08:44:14)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB