如何在本地主机开发服务器上设置 nginx 别名?

如何在本地主机开发服务器上设置 nginx 别名?

努力使 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;
        }
    }

相关内容