2015-03-16 4 views
1

Я новичок в nginx и у вас есть вопрос в отношении переписывания правил. Я пытаюсь настроить правила перезаписи для очень небольшого API, есть ли какой-либо подход к этому более подходящему, чем то, что я придумал?Как настроить правила перезаписи для небольшого api с помощью nginx?

У меня будет PHP, работающий позади него, используя добрый рабочий процесс MVC, где контроллер, метод и аргумент будут взяты из URI, но первый параметр будет представлять собой ключ API.

PHP концепция:

controller->method(arguments) 

Конфигурация:

location /api/ { 
    # passing api key only 
    rewrite ^/api/([0-9\-]+)/?$ /api/index.php?apikey=$1 last; 
    # passing api key and controller 
    rewrite ^/api/([0-9\-]+)/([0-9a-zA-Z\-]+)/?$ /api/index.php?apikey=$1&controller=$2 last; 
    # passing api key, controller and method 
    rewrite ^/api/([0-9\-]+)/([0-9a-zA-Z\-]+)/((select|insert|delete)+)/?$ /api/index.php?apikey=$1&controller=$2&method=$3 last; 
    # passing api key, controller, method and arguments 
    rewrite ^/api/([0-9\-]+)/([0-9a-zA-Z\-]+)/((select|insert|delete)+)/([0-9\-]+)/?$ /api/index.php?apikey=$1&controller=$2&method=$3&argument=$4 last; 
} 

Спасибо заранее,

ответ

0

Если вы определяете правило, переписывают для каждого запроса API, вы будете в конечном итоге с грязным, трудночитаемый конфигурационный файл nginx. Более того, вам все равно придется определять все те же маршруты в PHP.

Поэтому, на мой взгляд, имеет смысл иметь только один переписывание общего назначения, например .:

location /api/ { 
    # passing api requests 
    rewrite ^/api/(.*)/?$ /api/index.php?uri=$1 last; 
} 

А потом обрабатывать всю логику в index.php - синтаксический $ _REQUEST [ «»] URI и маршрут соответственно. Если вы перенаправляете все в один и тот же файл, зачем использовать одну и ту же логику дважды?

+0

Благодарим вас, я переведу его к бутстрапу вместо этого. –

Смежные вопросы