Выявив проблему, я тестирую свой API с помощью следующего кода:
$url = 'http://example.com/api/myendpoint;
print_r(get_headers($url));die();
Иногда это работает, но иногда возвращает 404. Ссылка, к которой я обращаюсь, просто возвращает ответ JSON.
Это стало происходить после перезагрузки сервера Amazon EC2.
Если я делаю это на местном уровне, кажется, что это работает лучше (но даже там иногда это не работает).
Array
(
[0] => HTTP/1.1 200 OK
[1] => Server: nginx/1.10.1
[2] => Content-Type: application/json
[3] => Connection: close
[4] => Cache-Control: private, must-revalidate
[5] => Date: Wed, 02 Nov 2016 14:47:36 GMT
[6] => pragma: no-cache
[7] => expires: -1
[8] => X-Debug-Token: fadeb4
[9] => Strict-Transport-Security: max-age=31536000; includeSubdomains;
)
Пытался сделать в некоторых онлайн-тестерах php. Та же проблема.
Я считаю, что это проблема конфигурации сервера, но я понятия не имею, как это отладить.
Спасибо вам за помощь.
ОБНОВИТЬ
Я получил эти данные, когда увидел подробности своего запроса / ответа
Array
(
[url] => http://example.com/api/myendpoint
[content_type] => text/html
[http_code] => 404
[header_size] => 163
[request_size] => 206
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.00557
[namelookup_time] => 0.004207
[connect_time] => 0.004851
[pretransfer_time] => 0.004874
[size_upload] => 0
[size_download] => 579
[speed_download] => 103949
[speed_upload] => 0
[download_content_length] => 579
[upload_content_length] => 0
[starttransfer_time] => 0.005555
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => ::ffff:XX:XX:XX:XX
[certinfo] => Array
(
)
[primary_port] => 80
[local_ip] => ::ffff:YY.YY.Y.YY
[local_port] => 42744
)
Дело в том, что основной ip XX: XX: XX: XX: XX не является моим настоящим ip. Это мой старый ip, до смены экземпляра на веб-сервере Amazon. Это могло быть причиной проблемы, но как ее исправить?
Я обнаружил, что это было:
Когда я сменил свой веб-сервер Amazon, на моем хостинге OVH я изменил ipv4 своего DNS. Но я не менял ipv6.
Поэтому иногда, когда я пытался получить доступ к сайту, звонки перенаправлялись на правильный ip (путь показан в ipv4), а иногда и на старый неправильный (путь, указанный ipv6)