Туннелируйте трафик Apache на другой порт с помощью .htaccess

У меня нет доступа к конфигурации виртуального хоста, и я пытаюсь настроить универсальное приложение angular на сервере apache.

Для домена задано значение 'dist Папка / browser. Приложение работает на порту 4201. Но я не могу понять (используя .htaccess), как туннелировать трафик с входящего порта 80 на порт 4201, где работает экспресс. И домен должен оставаться прежним.

Например. Я просматриваю example.com:80 Apache перенаправляет на localhost: 4201 В браузере example.com все еще отображается

Мой .htaccess:

RewriteEngine On
RewriteRule (.*) http://127.0.0.1:4201/$1 [P]

Что дает мне:

Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

Любая помощь приветствуется

0
задан 22 November 2018 в 12:05
1 ответ

Это ошибка, которая возникает, если вы работаете в сети linux , а сервер apache, к которому вы пытаетесь подключить свое приложение angular, работает на другом хосте . Поэтому, если вы подключились к сети с помощью ssh-ed с чем-то вроде (hidden) и запустили там свое приложение angular, вам необходимо убедиться, что «HHH» также является хост-машиной, на которой работает сервер apache.

Дополнительное примечание: обычно пользователи в сети linux будут иметь доступ к своему домашнему каталогу на любом хосте (поскольку домашние каталоги пользователей «смонтированы в сети»), и поэтому apache может обслуживать файлы из вашего домашнего каталога. независимо от его хоста, но в случае приложения angular вы не хотите, чтобы apache обслуживал файл в вашем домашнем каталоге, скорее, вы хотите, чтобы apache подключался к порту на каком-то хосте, на котором вы запускаете свое приложение, и apache не настроен для этого (обычно).

Вы можете подтвердить, что сервер apache работает на вашем хосте, например, ps -ef | grep "apache \ | httpd" . (Примечание: даже если на вашем хост-компьютере запущен сервер apache, это может быть не тот сервер apache, к которому вы пытаетесь подключиться из своего браузера.) Если на хосте, с которого вы запускаете, не запущен сервер apache ваше приложение angular (или, если оно есть, но это не тот сервер apache, к которому вы пытаетесь подключиться), вам нужно сделать одно из двух:

  1. выяснить, на каком хост-компьютере в вашей сети есть желаемый сервер apache . Если вы не уверены, то скорее всего (но не гарантированно) это будет тот хост, на который вы попадете, когда вы будете использовать ssh прямо в своем домене без указания имени хоста (скрытого) в соответствии со схемой выше). Итак, подключитесь по ssh к этому хосту и запустите приложение angular с там ; Теперь, когда сервер apache, к которому вы пытаетесь подключиться, находится на том же хосте, что и ваше приложение angular, он может подключиться с IP-адресом 127.0.0.1 (то есть с локальным хостом ).

  2. Оставайтесь на тот же хост, и просто измените IP-адрес в вашем файле .htaccess с 127.0.0.1 ('localhost') на IP-адрес вашего хоста ( hostname --ip-address в Linux). Теперь apache проксирует ваш хост, где бы он ни был, и вы можете запустить свое приложение angular там.

0
ответ дан 5 December 2019 в 05:02

Теги

Похожие вопросы