Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (5)

Лучшие ответы пользователя

Все ответы (6)
  • Какую выбрать CMS для создания типовых SPA (single page application) с использованием node.js и mongo?

    AlexanderKot
    @AlexanderKot Автор вопроса
    В общем почитав, что пишут иностранные коллеги на stackoverflow.com пока остановил выбор на keystonejs.com. Она походу живая, быстрая, поддерживается автором, заработала из коробки и умеет генерить интерфейс админки на основе модели данных. Когда будут первые результаты, постараюсь не забыть их показать.
    Ответ написан
    6 комментариев
  • Как сделать два и более веб сайтов + бекенд в проекте node.js и запустить под разными доменами?

    AlexanderKot
    @AlexanderKot Автор вопроса
    Напишу свой вариант работающий. Не на 100% подробно и может даже это не супер красиво и правильно, как изначально мечталось, но я думаю нубам со слабым английским поможет понять, в каком направлении думать. В противном случае подобные советы можно найти на стековерфлоу.

    Решил сделать так: запускаю node процесс веб приложения + node процесс для его api (типа restful). (на 2 сайта будет 4 процесса и т.д.) Конечно в виде виндоус сервисов с помощью https://nssm.cc/.
    В IIS создаю сайт, задаю ему доменное имя, настаиваю 2 перенаправления на порты - 3004 для api и 3003 для веб приложения. Для этого в iis нужно поставить 2 приблуды:
    www.iis.net/downloads/microsoft/application-reques...
    www.iis.net/downloads/microsoft/url-rewrite
    Потом, чтобы настроить rewrite - выбрать сайт и нажать на иконку [Url rewrite], после [Add rule] и выбрать reverse proxy, указать путь типа http://localhost:3003 и ОК
    IIS спросит про включение ARR, сказать да. После чего можно в web.config закинуть такой текст, должно заработать.
    <configuration>
    <system.webServer>
    ...   
    <rewrite>
        <rules>
            <clear />
            <rule name="images">
                <match url="photos/.*" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                <action type="None" />
            </rule>
            <rule name="api" stopProcessing="true">
                <match url="api\/.*" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                <action type="Rewrite" url="http://localhost:3004/{R:0}" />
            </rule>
            <rule name="web" stopProcessing="true">
                <match url=".*" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                <action type="Rewrite" url="http://localhost:3003/{R:0}" />
            </rule>
        </rules>
    </rewrite>

    Основной запор, почему то был с IIS. Не ехал мопед, хотя там вроде все просто, гуглилось плохо, да и хз что именно не работало.

    node процесс web приложения запускаете на порту 3003, в главном файле приложения прописан роутинг примерно такой
    app.use('/', express.static(__dirname));  // не уверен, что это нужно
    app.use('/js', express.static(__dirname + '/js')); // у меня express.js обрабатывает статику, мне показалось так проще, чем в iis настраивать, иначе на каждый запрос скрипта, стиля и т.д. iis будет пулять Index.html
    app.use('/libs', express.static(__dirname + '/libs'));
    app.use('/img', express.static(__dirname + '/img'));
    app.use('/css', express.static(__dirname + '/css'));
    app.use('/photos', express.static(config.photoPath)); // про фото не уверен, что именно работает - правило в iis или это
    //во всех остальных случайх возвращается index.html со всеми js файлами spa приложения
    app.all('/*', function (req, resp, next) {
        resp.sendfile('index.html', {root: __dirname});  //если при таком подходе, вам в ответ на какие-либо запросы лезет этот index.html, значит либо rewrite в iss не заработал, либо обработка статики в экспрессе с ошибкой сделана.
    });


    node процесс с приложением, которое является api запускаете на порту 3004
    В главном файле будет прописан роутинг на подобии:
    app.use('/api/category', yourCategoryHandler);
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (4)