Как запустить два приложения Angular / Node.js в одном домене на разных маршрутах? - PullRequest
0 голосов
/ 01 мая 2019

У меня есть два приложения Angular, одно для пользователей и другое для администраторов, работающих на разных должностях, 7000 и 7001 соответственно. Первое приложение должно работать на example.com/demo, а второе на example.com/demo/admin.

Структура каталогов приложения выглядит следующим образом:

/root
     /main-app (angular app for users)
     /main-app-server  (node.js app that serves the user app on port 7000)
     /admin-app (angular app for admins)
     /admin-app-server  (node.js app that serves the admin app on port 7001)

Я создал новый файл на /etc/nginx/sites-available/example.com, который содержит мой сервер и блоки местоположения.

# example.com Server Block
server {
        # SSL Configuration
        listen [::]:443 http2;
        listen 443 http2;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

        # Root Directory
        root /var/www/example.com/root;

        # Add index.php to the list if you are using PHP
        index index.html index.htm;

        # Server Name
        server_name example.com;

        # Security
        server_tokens off;

        # Location Blocks
        # Example Application
        location /demo {
                proxy_pass http://localhost:7000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }

        # Example Admin Application
        location /demo/admin {
                proxy_pass http://localhost:7001;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }
}

server {
        listen 80;
        listen [::]:80;
        if ($host = example.com) {
                return 301 https://$host$request_uri;
        }
        server_tokens off;
        server_name example.com;
        return 301 https://example.com$request_uri;
        location / {
                try_files $uri/ =404;
        }
}

... но ни одно из приложений Angular не работает правильно, так как Angular ищет статические ресурсы в папке /root/ для обоих приложений. (например: example.com/style123.css)

консоль приложения пользователя: enter image description here

консоль приложения администратора enter image description here

Неправильно ли я настроил свой сервер и / или блоки размещения? Кто-нибудь может указать мне правильное направление, пожалуйста?

...