Configurando nginx, reescritura y fastcgi

Configurando nginx, reescritura y fastcgi

Este problema me ha estado volviendo loco durante los últimos días... Al trabajar en una aplicación que necesita autenticación y que consta de diferentes partes (CMS, API, interfaz), nos encontramos con algunos problemas al compartir sesiones/cookies/origen cruzado. peticiones. Al final pensé que era más fácil implementar todo bajo un solo dominio;

  • esquema://app/ para la interfaz
  • esquema://app/api para la API
  • esquema://app/cms para el CMS

Esto causó algunos problemas con la compilación de API en php. La API espera request_uri como /users /images en lugar de /api/users y /api/users. Pensamos que una simple reescritura sería la solución, pero de alguna manera request_uri no se reescribe.

Aquí está la configuración del 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;
    }
}

También intenté agregar esto para sobrescribir request_uri:

fastcgi_param REQUEST_URI $uri?$args;

Pero esto resultó en que cada solicitud obtuviera el request_uri index.php

Entonces, ¿cómo puedo enviar todas las solicitudes que comienzan con /api al directorio de mi API y reescribir request_uri para eliminar /api del uri?

información relacionada