我在使用Slim POST路由正确配置Nginx时遇到了问题。
在StackOverflow的帖子中,据说重写POST请求不是一个好习惯。
我的想法是让http://someurl.com/scan成为index.php中的POST路由,并且只允许/ scan上的POST请求,并拒绝其他所有内容。
的index.php:
$app->post('/scan', function(ServerRequestInterface $request, ResponseInterface $response) { ... }
我的Nginx conf看起来像这样:
server {
listen 80;
server_name someurl.com;
index index.php;
root /var/www/maxime/public;
error_log /var/log/nginx/max.err
access_log /var/log/nginx/max.log
location / {
deny all;
}
location = /scan {
limit_except POST {
deny all;
}
rewrite ^/scan$ /index.php last;
}
location ~ index\.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
fastcgi_pass php_pool;
fastcgi_keep_conn on;
}
}
对我来说,这个conf告诉我,如果请求在/ scan上完成并且它是一个POST请求,那么我们将所有内容“重定向”到/index.php。然后index.php位置块开始执行,它将所有内容传递给index.php或我错误地在某个地方?
目前使用此设置我在Nginx中收到此错误:
* 100778 readv()失败(104:Connection re 读取上游客户端时的设置:123.123.123.123,服务器:someurl.com, 请求:“POST / scan HTTP / 1.1”,上游:“fastcgi://127.0.0.1:9001”,主持人:“someurl.com”