Назад | Перейти на главную страницу

обратный прокси-сервер для подключения нескольких внутренних серверов с одного виртуального хоста

У меня есть http-сервер apache, который действует как прокси для подключения к поддерживаемым серверам приложений.

например MachineA(https) -> MachineB(обратный прокси) -> MachineCn(Приложение)

Здесь порт 9002 MachineA (Public_lb) сопоставлен с портом 7777 MachineB (внутренний apache).

При поддержке у меня работают разные серверы приложений

например, для

  1. MachineC1 -> Weblogic
  2. MachineC2 -> Tomcat
  3. MachineC3 -> NodeJS
  4. MachineC4 -> Колба

Здесь есть одно имя сервера (MachineA: public_facing_lb) и порт (9002). Вот моя существующая конфигурация в MachineB (сервер обратного прокси-сервера apache), которая теперь отлично работает для всех подключений weblogic. Но когда я добавляю прокси для других приложений, он никогда не работает должным образом.

Что я здесь делаю не так?

LoadModule weblogic_module   "/u01/oracle/ohssa/ohs/modules/mod_wl_ohs.so"

RewriteEngine On
    RewriteCond %{HTTPS} on
    RewriteRule ^$ http://%{HTTP_HOST} [L,R]



    <IfModule mod_weblogic.c>
       NameVirtualHost *:7777
      <VirtualHost *:7777>
        ServerName https://public_facing_lb:9002
        RewriteEngine       On
        RewriteOptions inherit
        RewriteRule ^/$ /pod/reactaphome [PT]
        Debug ALL
        MatchExpression /
        DebugConfigInfo ON
        WLLogFile /var/log/httpd/wlproxy-qa.log
        KeepAliveEnabled ON
        KeepAliveSecs  15
        WLProxySSLPassThrough ON
        ProxyPreserveHost On


     <Location /pod/reactapp1>
       ProxyPass  http://nodejssrv1:1337
       ProxyPassReverse  http://nodejssrv1:1337
     </Location>

     <Location /pod/flaskapp1>
       ProxyPass  http://flasksrv1:8080
       ProxyPassReverse  http://flasksrv1:8080
     </Location>

     <Location /pod/tomcatapp1>
       ProxyPass  http://tomcatsrv1:8080
       ProxyPassReverse  http://tomcatsrv1:8080
     </Location>

     <Location /pod/console>
        SetHandler weblogic-handler
        WebLogicHost wlssrv1
        WeblogicPort 7001
        WLSRequest On
        ProxyPass  http://wlssrv1:7001/console
        ProxyPassReverse http://wlssrv1:7001/console
     </Location>
        SetHandler weblogic-handler
        WebLogicHost wlssrv1
        WeblogicPort 7001
        ProxyPass /pod/wlsapp1 http://wlssrv1:7001/wlsapp1
        ProxyPassReverse /pod/wlsapp1 http://wlssrv1:7001/wlsapp1
        ProxyPass /pod/wlsapp2 http://wlssrv1:7001/wlsapp2
        ProxyPassReverse /pod/wlsapp2 http://wlssrv1:7001/wlsapp2
        ProxyPass /pod/wlsapp3 http://wlssrv1:7001/wlsapp3
        ProxyPassReverse /pod/wlsapp3 http://wlssrv1:7001/wlsapp3

        ProxyPass /wlsapphome/global http://wlssrv1:7001/resources/getGlobalAppsList
        ProxyPassReverse /wlsapphome/global http://wlssrv1:7001/resources/getGlobalAppsList
        ProxyPass /wlsapphome http://wlssrv1:7001/resources/getAppsList
        ProxyPassReverse /wlsapphome http://wlssrv1:7001/resources/getAppsList

     </VirtualHost>
    </IfModule> 

Возможно, я ошибаюсь, помещая конфигурацию другого приложения в модуль weblogic if. Если я создаю несколько виртуальных хостов, в любой момент времени работает только первый виртуальный хост.

Нужно ли мне загружать модули для tomcat, nodejs и flask для связи, когда страницы загружаются сломанными. Как mod_wl_ohs, используемый для веб-логики?

Ваш <Location> не закрывается должным образом, следовательно, возможно, Apache даже не запускается должным образом. Использовать </Location> закрывать.

Для проблемы «в любой момент времени работает только первый виртуальный хост» убедитесь, что вы указали:

 NameVirtualHost *:7777

перед

 <VirtualHost *:7777>

И измените ServerName быть разным на каждом виртуальном хосте (например, appname.example.com).