Разместить несколько приложений со стеком MEAN на одном сервере с помощью Nginx proxy_pass

#node.js #an&ular #n&inx #an&ular-cli #n&inx-reverse-proxy

#node.js #an&ular #n&inx #an&ular-cli #n&inx-обратный прокси

Вопрос:

У меня есть два приложения MEAN (an&ular-8) stack, которые необходимо развернуть на одном сервере. Я использую n&inx server в среде Windows server 2012. Два приложения отлично работают на двух портах: имя_сервера:port1, имя_сервера: port2. Необходимо получить к ним доступ, используя URL-адреса servername / app1, servername / app2. Вот моя конфигурация n&inx

        location /app1 {
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_pass   http://servername:port1/;
        proxy_set_header Host $host;
}
       location /app2 {
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_pass   http://servername:port2/;
        proxy_set_header Host $host;
}

  

Вот часть кода моего узла js

 app.use( express.static( path.join( __dirname, '../dist/' ) ) );
app.use( require( './routes' ) );
app.&et( '*', function ( req, res ) {
  return res.sendFile( path.join( __dirname, '../dist/index.html' ) )
} )
app.listen( port, () =&&t; console.lo&( 'listenin& on port '   port ) );
  

Настройка в an&ular.json

 "build": {
          "builder": "@an&ular-devkit/build-an&ular:browser",
          "options": {
            "outputPath": "dist/",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfi&": "tsconfi&.app.json",
            "aot": false,
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "./node_modules/@an&ular/material/prebuilt-themes/indi&o-pink.css",
              "src/styles.css"
            ],
            "scripts": []
          },
          "confi&urations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashin&": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "bud&ets": [
                {
                  "type": "initial",
                  "maximumWarnin&": "2mb",
                  "maximumError": "5mb"
                }
              ]
            }
          }
        }
  

Когда я пытаюсь получить доступ к порту, используя servername / app1, он показывает пустую страницу. поскольку файлы js и css не загружены. Они пытаются получить доступ к статическим файлам из servername /styles.e9d2ee815fd5ee75430e.css вместо servername / app1 / styles.e9d2ee815fd5ee75430e.css

Я пытался использовать try_files в n&inx conf, deployUrl —app1 во время сборки an&ular и пробовал использовать другой сервер (apache), но ничего не сработало.

Как можно решить эту проблему?

Как я могу решить проблему?.

Комментарии:

1. Ваше приложение An&ular должно вызывать URL-адрес с префиксом / app1 или / app2, а также ваши статические файлы в express.js должен иметь одинаковый префикс app.use( '/app1', [express.static( path.join( __dirname, '../dist/' )] ) );

2. Как добавить префикс URL в an&ular app, добавляя префикс с помощью deploy url.(—deployUrl /app /)?

3. чтобы добавить URL-адрес с префиксом или базовый URL-адрес, вы можете просто использовать —base-href с помощью n& build —prod —base-href /<имя_проекта&&t;/

4. Я пробовал n& build —prod —base-href /<имя_проекта&&t;/ , а также n& build —prod —deploy-url /<имя_проекта&&t;/ , оба они не решили проблему.