Lógica do servidor de arquivos estáticos do Node.js (usando o Connect middleware)
Digamos que eu tenha a seguinte estrutura de sistema de arquivos:
/app/ Main application folder
/app.js Server JS file ran by node.js
/public Folder containing files for public website (port 80)
/index.html
/js/
/game.js
/admin/ Folder containing files used by local network system (port X)
/index.html
/js/
/screen.js
/share/ Folder containing files to be used by public website OR lan
/js/
/jquery.js
O resultado final é queadmin/index.html
pareceria:
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/screen.js"></script>
Ou seja, estou carregando dois arquivos de diferentes locais. Basicamente, o pensamento aqui é"verificar se o arquivo está em/share
, se não, tente carregá-lo da pasta de acordo com a porta ".
E aqui está o código atual que estou usando:
var connect = require('connect'),
sourcePublic = connect().use(
connect.static(__dirname + '/public', { maxAge: 86400000 })
),
sourceAdmin = connect().use(
connect.static(__dirname + '/admin', { maxAge: 86400000 })
),
sourceShare = connect().use(
connect.static(__dirname + '/share', { maxAge: 86400000 })
),
serverPublic = http.createServer(sourcePublic).listen(80),
serverAdmin = http.createServer(sourceAdmin).listen(90);
// ok, how do I use sourceShare?
PS: Este sistema deve ser acessível ao mundo através dehttp://host/
(possivelmente um domínio ou ip estático) E acessível através da rede local através dehttp://host:90/
.
Embora o material na porta 90 não danifique o sistema (é apenas uma tela de saída), prefiro que as pessoas não consigam acessá-lo externamente (facilmente garantindo que não haja encaminhamento de porta 90 entre o roteador e o servidor ).