我想把所有以“/API”开头的请求传递给“127.0.0.1:9000”一个fastcgi进程。
php-fpm服务器的工作状态为127.0.0.1:9000。
首先,我像这样使用“proxy_pass”:
location /api/ {
proxy_pass http://127.0.0.100/api/;
}
我尝试将请求传递到另一个服务器。然后使用“fastcgi_pass”将其传递到php-fpm服务进度:
server {
listen 80;
server_name 127.0.0.100;
root x:xxxxx/;
location /api/ {
root "x:xxxxx";
try_files $uri $uri/ /index.php?$args;
index index.php;
}
location ~ \.php(.*)$ {
try_files $uri $uri/ /index.php?$args;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}
}
它现在运行得很好。但是它有什么方法可以直接配置它吗?
我需要补充问题的细节。入口文件“index.php”路径是“root/api/index.php”。
1条答案
按热度按时间snz8szmq1#
当使用
PHP-FPM
和NGINX
时,不需要为PHP
脚本使用proxy_pass
。您可以通过fastcgi_pass
将PHP
请求直接传递给PHP-FPM
服务。这里是你可以如何设置它。假设您需要将所有以
"/api"
开头的请求传递到"127.0.0.1:9000"
(一个FastCGI
进程),配置应该如下所示:此配置假定:
您的
PHP-FPM
正在"127.0.0.1:9000"
上运行。您的所有PHP
文件都位于"/api"
下。在此配置中:任何以
"/api"
开头的请求将首先查找现有的文件或目录(try_files $uri $uri/
),如果找不到,则将其传递给"/index.php"
。位置
~ ^/api/(.*\.php)(/.*)?$
块匹配"/api"
下的任何PHP文件,并通过fastcgi_pass
将请求传递给PHP-FPM
。最后的位置
~ \.php$
块是不属于"/api"
的PHP
文件的全部,拒绝使用403 HTTP
状态代码进行访问。请记住将
"/path/to/your/application"
替换为文件系统上PHP
应用程序的实际路径。请务必测试您的配置(nginx -t)并重新加载或重新启动
NGINX
以使更改生效。另外,请注意,您可能需要根据特定的应用程序需求或其他服务器安全措施修改此配置。