我正在处理一段遗留代码,我无法改变它发布到的位置,所以我只需要想办法解决它。
Javascript 的片段如下所示:
POST /认证/登录/
这很奇怪,因为它是发布到一个目录,但无论如何,我想配置 Nginx 以接受到此位置的帖子,然后将它们传递给我的 Nginx 配置中的一些 PHP,我在 http 块中有以下内容
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /authentication/login/ {
index hello.php;
#root html;
#index /usr/local/nginx/html/hello.php;
}
location ~.php$ {
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
}
php 东西可以运行,我可以直接进入 hello.php 并且可以运行。
我的错误日志/访问日志并没有给我太多帮助。我在 hello.php 上遇到了 404 错误,但通过添加“index”解决了这个问题。然而,这并没有最终调用 php 的部分。我还尝试将 fastcgi 内容放入 nginx.conf 中的 /authenticate/login/ 位置。
最关键的是,如果我向 /authenticate/login 发布某些内容,我希望调用一段 php 代码来返回必要的值。
编写该位置块的正确方法是什么?有什么想法吗?
答案1
您需要在 ~.php {} 块之前指定确切位置以使 nginx 处理它,复制 fastcgi 参数以便将 url 传递给 php 并使用重写规则更改 uri。带有登录位置的配置块应如下所示:
location = /authentication/login/ {
rewrite ^(.*) /hello.php last;
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}