努力使 nginx 适应我的框架并在 apache 配置中获得等效效果:
Alias /site1 "/home/framework/public_HTML"
(然后 localhost/site1 显示具有 local/dev 设置的 site1 $_SERVER['REQUEST_URI']
)
我现在拥有的 nginx 是:
server {
listen localhost:80;
server_name localhost;
root /home/framework;
index /public_HTML/index.php;
location /site1 {
# alias /home/framework/public_HTML/;
# index index.php;
# try_files $uri $uri/ =404;
# try_files /home/framework/public_HTML/index.php =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
-> 我是否注释掉位置 /site1 中的行,全部或无,添加或删除周围的尾随斜杠... => 透明重定向到 localhost/site1/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/(从浏览器中的 url 复制)
因此,正如所示,所有内容都被注释掉后,正确的 index.php 会获取请求并且我会得到响应,但是 URL 栏中的 URL 和$_SERVER['REQUEST_URI']
nginx 传递给我的 index.php 文件的 URL 会变成
/site1/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/
为什么会出现这种循环?
答案1
(忘记用当时找到的解决方案来回答了)
不确定为什么它在提供某些服务之前会循环,但我对别名和索引的理解因我在 apache 中的使用而产生偏差,这可能是导致错误的根源。我最后从 apache 别名转换到 nginx 服务器所做的是使用正则表达式将所有别名作为一个声明的服务器,这样它们就很容易指向同一个文件夹,而且我在创建新项目时不必担心 nginx 配置:
server {
server_name "~^({[a-z]}2\.)*(?<project>\w+)\.(.*)localhost$";
root /home/framework/public_html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}