Este problema tem me deixado maluco nos últimos dias... Trabalhando em um aplicativo que precisa de autenticação e existe em diferentes partes (CMS, API, frontend), tivemos alguns problemas com compartilhamento de sessões/cookies/origem cruzada solicitações de. No final, pensei que seria mais fácil implementar tudo em um domínio;
- esquema://app/ para o front-end
- esquema://app/api para a API
- esquema://app/cms para o CMS
isso causou alguns problemas para a construção da API em php. A API espera request_uri como /users /images em vez de /api/users e /api/users. Achamos que uma simples reescrita seria a solução, mas de alguma forma o request_uri não foi reescrito.
Aqui está a configuração do servidor:
server {
listen 9090;
server_name coda.dev;
access_log /usr/local/var/log/nginx/coda.access.log;
error_log /usr/local/var/log/nginx/coda.debug.log notice;
charset utf-8;
rewrite ^/(.*)/$ /$1 permanent;
location / {
proxy_pass http://localhost:9000;
}
location /api {
root /Volumes/HDD/Sites/opdrachten/CODAapi/laravel/public;
try_files $uri /index.php;
}
location ~/cms {
proxy_pass http://localhost:9000;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9091;
fastcgi_index index.php;
include /usr/local/etc/nginx/fastcgi.conf;
fastcgi_param DOCUMENT_ROOT /Volumes/HDD/Sites/opdrachten/CODAapi/laravel/public;
fastcgi_param SCRIPT_FILENAME /Volumes/HDD/Sites/opdrachten/CODAapi/laravel/public/index.php;
break;
}
}
Também tentei adicionar isso para substituir request_uri:
fastcgi_param REQUEST_URI $uri?$args;
Mas isso resultou em cada solicitação obtendo o request_uri index.php
Então, como posso enviar todas as solicitações começando com/api para o diretório da minha API e reescrever o request_uri para remover/api do uri?