Как предотвратить Node.js/Express, обслуживающий исходный код приложения?
Я никогда не думал, что это будет проблемой с Node.js и Express, но по сумасшедшей прихоти я решил ввести в браузер расположение одного из исходных файлов в моем проекте Node.js Express - что-то вроде:
http://www.mywebsite.com/mynodejsapp/app.js
К моему экстремальному ужасу, мой исходный код приложения появился прямо, общедоступно для всех, чтобы видеть.
Итак, что в стороне: как остановить его в Node.js/Express?
Мой код настройки довольно прост:
var app = express();
app.configure(function() {
app.use(express.static('/home/prod/server/app/public'));
});
app.listen(8888);
Чтобы прояснить это, моя структура папок выглядит так:
/home/prod/server/
/home/prod/server/app.js
/home/prod/server/public/
Всевозможные файлы, предназначенные для публичного доступа, живут под /public
. Весь исходный код моего сервера живет под /server/
, и мое понимание конфигурации "Быстрая статическая папка" заключается в том, что статическая папка - это единственное место, которое Express с радостью обслуживает файлы из файловой системы.
Любые идеи?
Ответы
Ответ 1
Из того, что вы разместили, он действительно пахнет, как URL, который вы указали, обслуживается, например, Apache/nginx/... и вы поместили свое приложение node в корень документа. Ответ прост в этом (и любом подобном) случае:
Вы никогда не помещаете ни один из файлов исходного кода в корневой каталог документа или другую папку, доступную для HTTP. В вашем случае /home/prod/server/app/public
должен содержать только клиентскую часть (HTML, CSS, Graphics, (minified) клиентская JS), а nginx не должен иметь ничего выше этой папки в качестве корня документа.