Nginx 多个位置

Nginx 多个位置

我已经在这里花了 5 个小时来思考如何解决,但我不能。

假设我们有以下 dir 结构

/var/www/key1
/var/www/key1/wwwdir
/var/www/key1/dir1
/var/www/key1/dir2

还有另外一个

/var/www/key2
/var/www/key2/wwwdir
/var/www/key2/dir1
/var/www/key2/dir2

例如,我想要当我打字时http://mysite.com/key1/var/www/key1/wwwdir当我输入时获取文件http://mysite.com/key2从中获取文件/var/www/key2/wwwdir

我的所有 nginx 配置如下"keys"

server {
    listen       80;

    include /etc/nginx/conf.d/*.conf;

    location ~ /\.ht {
            deny all;
    }
}

key1.conf 是

location ~/key2 {

    chunked_transfer_encoding off;
    index index.php index.html index.htm;
    alias /var/www/key2/wwwdir;

    location ~* \.php$ {


        try_files $uri = 404;
        fastcgi_index   index.php;
        fastcgi_pass unix:/var/php-fpm/key2.sock;
        include /etc/nginx/fastcgi_params;
        fastcgi_keep_conn on;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }
}

这是行不通的。当我请求以下网址时http://mysite.com/key2我明白了BAD 网关错误。

/var/log/nginx/error.log一个错误 /var/www/key2/wwwdir/key2/index.php that file does not exists(key2 存在 2 次,我不知道为什么)

当我打字时

http://mysite.com/key2我想从 获取文件/var/www/key2/wwwdir

例子:

http://mysite.com/key2 => /var/www/key2/wwwdir
http://mysite.com/key2/admin => /var/www/key2/wwwdir/admin

当然,我希望与我的另一个虚拟主机 key1 相同

答案1

您应该使用alias而不是root.

说明:如果您root在后面使用 uri,location则会追加到rootdir.这就是为什么出现两次的原因key2。但是如果你使用aliasuri之后location就不会追加了。

例如:

location /test {
  root /wwwdir/mydir;
}

服务。example.com/test/index.html/wwdir/mydir/test/index.html

location /test {
  alias /wwwdir/mydir;
}

服务example.com/test/index.html(部分未出现)/www/mydir/index.htmltest

查看更多这里

相关内容