我已经在这里花了 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
。但是如果你使用alias
uri之后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.html
。test
查看更多这里。