php - NGINX 总是强制下载 PHP 页面
问题描述
我正在尝试为 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 设置有问题阻止了通信?不知道如何分辨。
解决方案
你可以试试这个配置吗?
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
后端。
推荐阅读
- visual-studio-code - VSCode:如何在评论中禁用 doxygen 标签突出显示?
- angular - 如何在提交时保存 FormArray 字段的值?
- sql-server - django.db.utils.InterfaceError:('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) )
- java - 按下画布时如何调用方法
- java - 如何从更新引擎服务获取更新状态?
- angular - 更改(更改)事件的布尔值
- python - python 将熊猫附加到 postgresql。数据框有不同的列
- java - 我如何正确地抽象这个
- python-3.x - 使用 PyInstaller 编译 Selenium 脚本,得到 TypeError: an integer is required (got type bytes)
- uisearchcontroller - iOS 13:在导航项上关闭 UISearchController 会导致 tintColor 恢复为默认值