この問題はここ数日私を悩ませてきました... 認証を必要とし、さまざまな部分 (CMS、API、フロントエンド) が存在するアプリケーションに取り組んでいるときに、セッション/Cookie/クロスオリジン リクエストの共有に関する問題が発生しました。最終的に、すべてを 1 つのドメインで実装するのが最も簡単だと思いました。
- フロントエンドの scheme://app/
- API の場合は scheme://app/api
- CMS の場合は scheme://app/cms
これにより、PHP での API ビルドに問題が発生しました。API は、/api/users や /api/users ではなく、/users /images のような request_uri を想定しています。単純な書き換えが解決策になると考えましたが、どういうわけか request_uri は書き換えられません。
サーバーの設定は次のとおりです。
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;
}
}
request_uri を上書きするために、以下も追加してみました:
fastcgi_param REQUEST_URI $uri?$args;
しかし、これにより、すべてのリクエストがrequest_uri index.phpを取得することになりました。
では、/api で始まるすべてのリクエストを API のディレクトリに送信し、request_uri を書き換えて uri から /api を削除するにはどうすればよいでしょうか?