这就是我想要的:
我有一个网址“ 10.0.0.1/0000000/abctest/文件目录/文件名”,
并使用此网址,我可以相应地读取文件
因此,我创建一个带有“ http.createServer”的服务器并绑定到8001端口,并设置nginx使其每当读取/ 0000000 / abctest /时,它将重定向到端口8001
添加nginx反向代理后,我尝试编写服务器代码,这是我的http服务器代码
var port = 8001;
var http = require('http');
var fs = require('fs');
var DefaultFileDir = '/home/ubuntu/Server/Proj/static';
var UrlPrefix = "/0000000/abctest"
var hostname = "127.0.0.1"
//var host = hostname+UrlPrefix
var server= http.createServer(function(req,res){
var url = req.url;
console.log(url);
var file = DefaultFileDir + url;
fs.readFile(file, function(err,data){
if(err){
console.log(err);
res.writeHeader(404,{
'content-type' : 'text/html;charset="utf-8"'
});
res.write('<h1>404</h1>');
res.end();
}else{
if(url.substr(url.length-3, 3) == ".gz"){
res.writeHeader(200,{
'Content-Encoding' : 'gzip',
'content-type' : 'application/octet-stream'
});
}else{
res.writeHeader(200,{
'content-type' : 'text/html;charset="utf-8"'
});
}
res.write(data);
res.end();
}
});
}).listen(port,hostname);
console.log("Static file server running at\n => http://localhost:" + port + "/\nCTRL + C to shutdown");
问题出来了: 它不知道如何忽略url前缀“ / 0000000 / abctest”
Error: ENOENT: no such file or directory, open '/home/ubuntu/xxxxx/static/0000000/abctest/folder001/index.html'
但是我的实际文件路径应为'/home/ubuntu/xxxxx/static/folder001/index.html'
http.createserver是否不能忽略url前缀?我可以从中寻求一些提示吗。
答案 0 :(得分:0)
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
我最终通过使用nginx反向代理重写url来绕过问题