Логика статического файлового сервера Node.js (с использованием промежуточного программного обеспечения Connect)
Допустим, у меня есть следующая структура файловой системы:
/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
Конечным результатом является то, чтоadmin/index.html
будет выглядеть так:
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/screen.js"></script>
То есть я загружаю два файла из разных мест. В основном, мысль здесь"check if file is in /share
, if not, try loading it from folder according to port".
А вот текущий код, который я использую:
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: Эта система должна быть доступна черезhttp://host/
(возможно домен или статический ip) И доступ через локальную сеть черезhttp://host:90/
.
Несмотря на то, что содержимое порта 90 не повредит систему (это всего лишь экран вывода), я бы предпочел, чтобы люди не могли получить к ней доступ извне (это легко сделать, обеспечив переадресацию порта 90 между маршрутизатором). и сервер).