nodejs http.createServer читает URL и удаляет urlprefix - PullRequest
0 голосов
/ 22 ноября 2018

Вот что я хочу:

У меня есть URL "10.0.0.1/0000000/abctest/filedirectory/filename",

, и с этим URL я могу прочитатьсоответственно файл

Таким образом, я создаю сервер с 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?Могу ли я найти некоторые подсказки из этого.

1 Ответ

0 голосов
/ 09 января 2019

http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

Наконец, я обошел проблему, переписав URL с использованием обратного прокси-сервера nginx

...