[원래 질문: iOS API 링크가 시간 초과를 유지함]
저는 API 개발자이며, 온라인으로 API를 테스트하는데 문제가 없습니다.
그런데 IOS 측 개발자가 NSURLCONNECTION 요청이 시간 초과로 인해 응답을 받을 수 없다는 오류를 보고했습니다.
그리고 그는 다른 https RestAPI를 요청할 때 응답을 받을 수 있습니다.
죄송합니다. 이 문제는 서버 문제인가요, 아니면 IOS 개발자 문제인가요?
[추가 설명]
다시 확인해 보니 Safari에서는 이 웹사이트를 열 수 없지만 Chrome에서는 열 수 있었습니다.
서버에 ping을 보낼 수 있는데 이유가 무엇인가요?
[추가설명]
최근 발견된 문제:
https://www.demo.com/index2.php는 접속할 수 없지만 https://www.demo.com/index2.html은 접속할 수 있습니다
내 서버 구성은 lanmp, nginx 프록시-아파치입니다
nginx-1.10.2
apache2.4
nginx에 구성 오류가 있나요? 여러 정보를 확인해 보니 http2 때문이라는 말도 있고 SSL 때문이라는 말도 있습니다.
[보충]
Apache와 nginx 로그가 모두 있습니다. 이는 관련 웹사이트 로그의 일부입니다
apache: 모든 요청은 200입니다(iPhone 사파리 사용)
nginx: 그것도 200
[거의 반나절을 검색한 끝에 드디어 해결책을 찾았습니다.]
문제 원인: nginx의 프록시 구성 문제로 인해 HTTP2 요청이 올바르게 응답을 받지 못합니다.
이것은 Apache에 대한 nginx 프록시 문제입니다. nginx1.9+.x/apache2.4의 프록시에는 모두 이 문제가 있습니다.
해결책은 nginx 프록시를 구성하는 것입니다:
proxy_hide_header 업그레이드;
이 문제는 nginx에서 논의되었습니다: https://trac.nginx.org/nginx/...
【"업그레이드" 헤더는 h2를 통해 프록시 설정되어서는 안 됩니다】
https가 인증을 위해 결제가 필요한 종류가 아닌 이상 iOS에 인증서를 제공할 필요가 없습니다.
또한, 다른 단말기에서 가능하다면 일반적으로 서버측 문제는 아닙니다.
하지만 Tomcat 구성에 문제가 있는 것 같습니다.