Я пытаюсь переместить приложение из PHP на Node.js. Приложение PHP использует сервер Apache и имеет tileservices.conf
файл, необходимый для работы приложения. Как бы я перенес конфигурацию в этом файле в приложение Node?
Alias /tiles /sandbox/TileServices/www/TileStreamer.php
Alias /thumbs /sandbox/TileServices/www/ThumbStreamer.php
Alias /MosaicTest /sandbox/TileServices/www/MosaicTest
RewriteEngine on
RewriteRule ^/1.0.0/([a-zA-Z0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)\.[a-zA-Z]*$ /sandbox/TileServices/tiles/tc/cache_server.php?z=$2&c=$3&r=$4&cache=$1
RewriteRule ^/nwomtest/1.0.0/(.+)/(.+)/(.+)/(.+)\.[a-zA-Z]*$ /sandbox/TileServices/www/tc/cache_server_new.php?z=$2&c=$3&r=$4&cache=$1
RewriteRule ^/nocache/nwomtest/1.0.0/(.+)/(.+)/(.+)/(.+)$ /sandbox/TileServices/www/tc/cache_server_new.php?z=$2&c=$3&r=$4&cache=$1&do_not_cache=nocache
RewriteRule ^/nocache/nwomtest/1.0.0/(.+)/(.+)/(.+)/(.+)\.[a-zA-Z]*$ /sandbox/TileServices/www/tc/cache_server_new.php?z=$2&c=$3&r=$4&cache=$1&do_not_cache=nocache
RewriteRule ^/oms/1.0.0/(.+)/(.+)/(.+)/(.+)\.[a-zA-Z]*$ /sandbox/TileServices/www/MosaicRequestHandler.php?z=$2&c=$3&r=$4&library=$1&filestyle=strip
RewriteRule ^/omb/1.0.0/(.+)/(.+)/(.+)/(.+)\.[a-zA-Z]*$ /sandbox/TileServices/www/MosaicRequestHandler.php?z=$2&c=$3&r=$4&library=$1&filestyle=block
RewriteRule ^/ms/1.0.0/(.+)/(.+)/(.+)/(.+)/(.+)\.[a-zA-Z]*$ /sandbox/TileServices/www/Mosaic/Mosaic.php?z=$3&c=$4&r=$5&resource=$1&tkid=$2&filestyle=strip
RewriteRule ^/mb/1.0.0/(.+)/(.+)/(.+)/(.+)/(.+)\.[a-zA-Z]*$ /sandbox/TileServices/www/Mosaic/Mosaic.php?z=$3&c=$4&r=$5&resource=$1&tkid=$2&filestyle=block
<Directory "/sandbox/TileServices/www">
AllowOverride None
Options -Indexes
Require all granted
<IfModule speling>
CheckSpelling on
</IfModule>
SetEnv MOUNT_PREFIX "/mnt/autofs"</Directory>
<Directory "/sandbox/TileServices/www/tiles/MosaicTest">
Require all denied
Allow from 10.0.0.0/8
Allow from 172.16.0.0/12
Allow from 192.168.0.0/16
Allow from 206.90.52.6/32
</Directory>
Отредактировано:
// тонна информации о маршрутизации http://expressjs.com/en/guide/routing.html
за первую часть (до первой 2х новой строки)
Вы в значительной степени должны выразить, чтобы сделать следующее:
app.get('/tiles', function (req, res) {
res.send('GET request to /tiles'); //or some other logic
});
app.get('/thumbs', function (req, res) {
res.send('GET request to /tiles'); //or some other logic
});
app.get('/MosaicTest', function (req, res) {
res.send('GET request to /tiles'); //or some other logic
});
Вторая часть:
// ^/1.0.0/([a-zA-Z0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)\.[a-zA-Z]*$
app.get('/1.0.0/:param1/:param2/:param3/:param4', function (req, res) {
var param1 =req.params.param1,
param2 = req.params.param2,
param3 = req.params.param3,
param4 = req.params.param4;
res.send('your first route parameter is '+param1); //or some other logic
});
Первая часть, вероятно, не будет проблемой, потому что Node.js НЕ будет обслуживать каталоги и файлы, если вы не запрограммируете это тоже. Таким образом, ваш сервер защищен.
Вторая часть, если это файлы (например, изображения), вам, вероятно, нужно подумать о том, как отправить их на пользовательский узел. Если это просто страницы / другие данные, которые вы будете обслуживать через узел, вам в основном необходимо отфильтровать IP-адреса, которые к ним обращаются, чтобы что-то вроде
// this goes after your route definition
// so after something like app.get('/MosaicTest', function (req, res) {
var ip = req.ip;
if (ip == '127.0.0.1') {
res.send('ip not allowed');
res.end();
}
// close route definition });
// source: http://stackoverflow.com/questions/12349251/restrict-access-to-node-js-based-http-server-by-ip-address
может помочь
К сожалению, я не эксперт по node.js, поэтому вам нужно искать другие ответы или задавать более конкретные вопросы, чтобы все это было сделано.
Надеюсь, что все это поможет вам на вашем пути! 🙂
Других решений пока нет …