【问题标题】:Nginx alias and try_files to subfolder doesn't workNginx 别名和子文件夹的 try_files 不起作用
【发布时间】:2016-01-24 01:29:12
【问题描述】:

当我将我的 php 文件放在 /home/tim_test 中时,它工作正常

当我将文件放入 /home/tim_test/hmm 时,它不起作用。为什么不呢?

server {

    listen 80;
    root /home;
    index index.php;

    location /admin {

        alias /home/admin/;
        try_files $uri $uri.html $uri/ /home/admin/;
        index index.html index.htm index.php;

    }

    location /tim_test/ {

        alias /home/tim_test/;
        try_files $uri $uri.html $uri/ /home/tim_test/;
        index index.html index.htm index.php;

    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        location ~ \.php$ {

            try_files $uri =404;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;

        }     

}

我尝试将我的文件编辑为如下所示以反映文件夹更改,但它不起作用,当我在浏览器中访问 /tim_test 时出现 403 禁止

location /tim_test/ {

    alias /home/tim_test/hmm/;
    try_files $uri $uri.html $uri/ /home/tim_test/hmm/;
    index index.html index.htm index.php;

}

谢谢!我很难过。我尝试了 100 多次 nginx 重启和不同的事情。

编辑:如果我在 chrome 上去那里,我得到一个 404 未找到,我想我只是在 Firefox 上得到 403,因为我尝试访问该网站很多次。不管怎样,它都不起作用。

【问题讨论】:

    标签: php nginx alias subdirectory


    【解决方案1】:

    关于aliastry_files 指令的nginx 上有一个very old open bug

    关于您的第一个配置文件,两个alias 指令是不必要的,因为两个位置块都继承root 的值并附加位置的值。

    另外,try_files 指令的最后一个元素(/home/admin//home/tim_test/)不是 URI。

    第一个配置文件应该是:

    root /home;
    location /admin {
        try_files $uri $uri.html $uri/ /admin/;
        index index.html index.htm index.php;
    }
    location /tim_test/ {
        try_files $uri $uri.html $uri/ /tim_test/;
        index index.html index.htm index.php;
    }
    

    关于子文件夹hmm。除了try_files 指令的最后一个元素(上面提到)之外,配置看起来不错。这意味着该问题可能与alias / try_files 交互有关。

    alias 的替代方案是内部重写,但将目标 URI 放置在源 URI 的命名空间中可能会使解决方案变得不必要地困难。

    【讨论】:

    • 我花了几个小时来解决一个非常相似的问题,将 $uri.html 添加到序列中对我来说是关键。我一直假设这暗示在 nginx 配置中的某个地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2019-03-15
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    相关资源
    最近更新 更多