Размещение веб-приложения на Heroku в подпапке

Подпапка Heroku — это размещение веб-приложения на платформе Heroku в определенном подкаталоге или подпапке домена. Вот несколько методов, которые можно использовать для достижения этой цели, а также примеры кода:

  1. Подход на основе поддоменов:

    • Создайте субдомен, указывающий на ваше приложение Heroku.
    • В настройках вашего DNS-провайдера создайте запись CNAME для субдомена, указывающую на домен приложения Heroku.
    • Настройте приложение Heroku для распознавания субдомена.

    Пример:
    Настройки DNS:
    Поддомен: subfolder.example.com
    CNAME: subfolder.example.com ->your-heroku-app.herokuapp.com

    Конфигурация Heroku:
    добавьте subfolder.example.com в качестве личного домена в настройках приложения Heroku.

  2. Подход с обратным прокси:

    • Настройте обратный прокси-сервер (например, Nginx), который находится перед вашим приложением Heroku.
    • Настройте обратный прокси-сервер для пересылки запросов в соответствующую подпапку приложения Heroku на основе URL-адреса.

    Пример (конфигурация Nginx):

    server {
       listen 80;
       server_name example.com;
    
       location /subfolder {
           proxy_pass http://your-heroku-app.herokuapp.com/;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
       }
    }
  3. Подход к маршрутизации URL:

    • Используйте веб-платформу или сервер, поддерживающий маршрутизацию URL-адресов, и создавайте маршруты, сопоставляющие определенные URL-адреса с различными частями вашего приложения Heroku.

    Пример (Node.js с Express.js):

    const express = require('express');
    const app = express();
    
    // Route for the subfolder
    app.use('/subfolder', express.static('public'));
    
    // Other routes or middleware
    
    // Start the server
    app.listen(process.env.PORT || 3000, () => {
       console.log('Server is running...');
    });
  4. Подход к интерфейсной платформе:

    • Если вы используете интерфейсную платформу, такую ​​как React или Angular, вы можете настроить маршрутизацию внутри платформы для обработки подпапки.

    Пример (React с реактивным маршрутизатором):

    import React from 'react';
    import { BrowserRouter as Router, Route } from 'react-router-dom';
    import SubfolderComponent from './SubfolderComponent';
    
    const App = () => {
       return (
           <Router basename="/subfolder">
               <Route path="/" component={SubfolderComponent} />
               {/* Other routes */}
           </Router>
       );
    };
    
    export default App;