Einrichten von Nginx, Rewrite und FastCGI

Einrichten von Nginx, Rewrite und FastCGI

Dieses Problem hat mich in den letzten Tagen wahnsinnig gemacht ... Bei der Arbeit an einer Anwendung, die eine Authentifizierung erfordert und aus verschiedenen Teilen besteht (CMS, API, Frontend), sind wir auf einige Probleme mit dem Teilen von Sitzungen/Cookies/Cross-Origin-Anfragen gestoßen. Am Ende dachte ich, es wäre am einfachsten, einfach alles unter einer Domäne zu implementieren;

  • scheme://app/ für das Frontend
  • scheme://app/api für die API
  • scheme://app/cms für das CMS

Dies verursachte einige Probleme beim API-Build in PHP. Die API erwartet Request-URIs wie /users /images statt /api/users und /api/users. Wir dachten, eine einfache Neuschreibung wäre die Lösung, aber irgendwie wird die Request-URI nicht neu geschrieben.

Hier ist das Server-Setup:

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;
    }
}

Ich habe auch versucht, dies hinzuzufügen, um die request_uri zu überschreiben:

fastcgi_param REQUEST_URI $uri?$args;

Dies führte jedoch dazu, dass jede Anfrage die request_uri index.php erhielt

Wie kann ich also alle Anfragen, die mit /api beginnen, an das Verzeichnis meiner API senden und die Anfrage-URI neu schreiben, um /api aus der URI zu entfernen?

verwandte Informationen