nginx 找不到php文件,使用nginx和php找不到文件

因此,我试图在过去3天内处理您的问题,以便更好,更深入地了解FASTCGI . 我在NGINX和FPM之间放了一个 Logger ,这有助于我更好地理解这些交互 . 以下是我认为适合您的配置

Edit-1

在解决聊天问题后更新了配置

upstream react {

server react:3000;

keepalive 8;

}

map $fastcgi_script_name $fastcgi_script_name_fcgi {

"~*/ajax/(?P.*)$" /$rest_url;

default $fastcgi_script_name;

}

map $request_uri $request_uri_fcgi {

"~*/ajax/(?P.*)$" /$rest_url;

default $request_uri;

}

map $document_uri $document_uri_fcgi {

"~*/ajax/(?P.*)$" /$rest_url;

default $document_uri_fcgi;

}

server {

listen 0.0.0.0:80;

server_name localhost;

location / {

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

proxy_set_header X-NginX-Proxy true;

proxy_pass http://react;

proxy_redirect off;

}

location /ajax {

alias /var/www/public;

try_files $uri @php;

}

location @php {

fastcgi_split_path_info ^/ajax/(.+\.php)(/.+)$;

fastcgi_pass fpm:9000;

fastcgi_index index.php;

include fastcgi_params;

fastcgi_param SCRIPT_NAME /index.php;

fastcgi_param REQUEST_URI $request_uri_fcgi;

fastcgi_param DOCUMENT_URI $document_uri_fcgi;

fastcgi_param SCRIPT_FILENAME /var/www/public/index.php;

}

client_max_body_size 5m;

}

所以基本的想法是使用 alias 指令从 document_root 替换 /ajax . 然后覆盖 request_uri 和其他参数,以便正确的URL到达PHP代码以进行路由解析 .

下面是我调用 http://vm/ajax/router.php?x=2 时我的PHP脚本收到的部分内容

{

"COOKIES": null,

"GET": {

"x": "2"

},

"POST": [],

"REQUEST": {

"x": "2"

},

"HEADERS": null,

"SERVER": {

"HOME": "/var/www",

"SCRIPT_FILENAME": "/var/www/html/router.php",

"DOCUMENT_ROOT": "/var/www/html",

"DOCUMENT_URI": "/router.php",

"REQUEST_URI": "/router.php?x=2",

"SCRIPT_NAME": "/router.php",

"CONTENT_LENGTH": "",

"CONTENT_TYPE": "",

"REQUEST_METHOD": "GET",

"QUERY_STRING": "x=2",

"FCGI_ROLE": "RESPONDER",

"PHP_SELF": "/router.php",

"argv": [

"x=2"

],

"argc": 1

}

}

你可以看到什么都没有 /ajax

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值