我正在尝试为PHP创建一个NGINX配置,该配置将在docker安装程序上运行。使用一些在线的NGINX / PHP指南,我创建了一个conf文件,该文件旨在将所有请求发送到服务器,但不存在文件,但是当我击中基本URL时,Chrome下载的文件index.php
的内容未经处理。如果我点击了其他页面,则显示404。
server {
index index.php;
server_name gamersplane.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/api;
location .* {
try_files $uri =404;
rewrite .* index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass api:9000;
fastcgi_index index.php;
fastcgi_param HTTP_PROXY '';
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
我觉得我应该在现有位置块之前为非.php的任何内容创建一个位置块,但是我似乎无法弄清楚哪里出了问题。 conf错误吗,或者我的docker设置是否有问题阻止通讯?不确定如何分辨。
答案 0 :(得分:0)
您可以尝试此配置吗?
server {
index index.php;
server_name gamersplane.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/api;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ [^/]\.php(/.*$|$) {
fastcgi_split_path_info ^(.*[^/]\.php)(/.*$|$);
fastcgi_pass api:9000;
fastcgi_index index.php;
fastcgi_param HTTP_PROXY '';
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
这可能有用,但是我不确定api:9000
后端。