Конфигурация nginx для API RESTful

Я начинаю с nginx и php, поэтому, пожалуйста, извините мой основной вопрос.

Для API на основе RESTful (nginx + php) мне понадобится некоторая помощь в конфигурации nginx.

Вот соответствующий фрагмент конфигурации nginx (как предлагается здесь ) для перенаправления всех / api / v1 / * запросов на мой скрипт apiv1.php:

server { server_name myServer; root /usr/share/nginx/html; location /api/v1/ { try_files $uri $uri/ /apiv1.php?$args; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; } 

Теперь проблема заключается в том, что когда я набираю http: // myServer // api / v1 / resource / GetInfo в моем браузере, скрипт apiv1.php, похоже, не получает «resource / GetInfo». На самом деле, _GET и _REQUEST пусты, но _SERVER выглядит нормально!

В моем /etc/php5/fpm/php.ini включена следующая соответствующая конфигурация:

 request_order = "GP" variables_order = "GPCS" register_argc_argv = Off auto_globals_jit = On. 

Возможно, вы знаете, почему php _GET и _REQUEST пусты? Это связано только с моей конфигурацией php?

С наилучшими пожеланиями, М.

Замените это:

 location /api/v1/ { try_files $uri $uri/ /apiv1.php?$args; } 

Внутри блока сервера:

 rewrite ^/api/v1/([^/]+)/([^/]+)/?$ /apiv1.php?class=$1&method=$2? last; 

Создайте php-файл с именем apiv1.php и поместите в корневой каталог вашего веб-сервера следующие строки кода:

 <?php $class = filter_input(INPUT_GET, 'class', FILTER_SANITIZE_STRING); $method = filter_input(INPUT_GET, 'method', FILTER_SANITIZE_STRING); echo $class; echo '<br />'; echo $method; 

Проверьте, посетив следующую ссылку в своем браузере:

 http://myServer/api/v1/members/getInfo 

Если кто-то другой попал на эту страницу, есть решение, которое я получил для себя после небольшого исследования:

 location ~ ^/api/v0/(.*)/?$ { try_files $uri $uri/ /v0.php?req=$1&$args; } 

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