Apache URI манипуляции запросами для статического RESTful API (разработка) - PullRequest
0 голосов
/ 16 июня 2019

Я разрабатываю приложение для интерфейса RESTful API.В настоящее время мне всегда приходится ждать примерно 2,5 секунды, пока мой локальный внутренний сервер вычислит ответ API.Это слишком долго, поэтому я начал использовать статические конечные точки с всегда одинаковым предварительно рассчитанным ответом.Время отклика снижается до 50 миллисекунд, что довольно здорово.

Но, тем не менее, у меня возникли проблемы с конфигурацией Apache 2.4 vhost.В настоящее время я использую ( только в разработке ):

Header always set Content-Type "application/json"
Header always set Access-Control-Allow-Headers "authorization, content-type"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Allow-Origin "http://domain.tld"
Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS, HEAD"

RewriteEngine on

# check if target exists on file system, if not redirect to fileNotFound.php. 
# the PHP file adds some useful additional information like expected file path and name
RewriteCond %{DOCUMENT_ROOT}/$1/%{REQUEST_METHOD}_%{QUERY_STRING}.json !-f
RewriteRule ^(.*)$ http://%{SERVER_NAME}/fileNotFound.php [P,L]

# redirects requests to files if target exists on file system
# from GET www.domain.tld/api/v1.0.0/token?key=value
# to         documentRoot/api/v1.0.0/token/GET_key=value.json
RewriteCond %{DOCUMENT_ROOT}/$1/%{REQUEST_METHOD}_%{QUERY_STRING}.json -f
RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1/%{REQUEST_METHOD}_%{QUERY_STRING}.json [P,L]

Если я запрашиваю URI, например

GET www.domain.tld/api/v1.0.0/token?key=value

Apache должен переписать URI, чтобы использовать этот файлв файловой системе

documentRoot/api/v1.0.0/token/GET_key=value.json

проверьте, существует ли этот измененный ресурс URI и, если да, подайте его под исходным URI.Если не подать fileNotFound.php под исходным URI.

Если я запрашиваю ресурс, который обычно существует, он работает как положено.
Проблемы с этим конфигом:

  • Если я запрашиваю ресурс, который не существует, Apache через 10 минут отвечает с ошибкой прокси-сервера 502.
  • Если браузер отправляет запрос OPTIONS на какой-либо ресурс, Apache отвечает с ошибкой прокси-сервера 502 после 10минут.

Я полагаю, что Apache застрял во внутреннем цикле перенаправления и через 10 минут произошел тайм-аут, что привело к ошибке 502 Proxy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...