在过去的几天里,这个问题一直困扰着我……在一个需要身份validation并且存在不同部分(CMS,API,前端)的应用程序中,我们遇到了一些共享会话/ cookies /交叉源的问题要求。 最后,我认为在一个领域实施一切都是最简单的。
这导致了在PHP中的API构build一些麻烦。 API期望request_uri是/ users / images而不是/ api / users和/ api / users。 我们认为一个简单的重写将是解决scheme,但不知何故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?