Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:apache_http_server_archlinux_-_mod_proxy_ajp_-_apache_tomcat_kommunikation

Apache HTTP Server ArchLinux - mod_proxy_ajp - Apache Tomcat Kommunikation

Der Apache HTTP Server ist ein Open Source Webserver und der seit 1996 am meisten im Internet eingesetzte Webserver weltweit. Der freie und quell offenen Webserver wird von der Apache Software Foundation zur Verfügung gestellt und weiterentwickelt.

Um den Apache HTTP Server als z.B. Frontend-Server vor eines Apache Tomcat Server zu betreiben, kann als Kommunikationsprotokoll das AJP/1.3-Protokoll zum Einsatz kommen.

Hierbei gibt es zwei Module, die die Kommunikation zwischen dem Apache HTTP Server und dem Apache Tomcat Server über das AJP/1.3-Protokoll bewerkstelligen können:

  1. mod_proxy_ajp - Federführung bei der Entwicklung Apache HTTP Server
  2. mod_jk - Federführung bei der Entwicklung Apache Tomcat Server

Nachfolgend soll der Einsatz des Moduls - mod_proxy-ajp.so beschrieben werden.

:!: HINWEIS - Eine Installation des Moduls mod_proxy_ajp.so ist nicht erforderlich, da es sich um ein Modul handelt, welches standardmässig bei der Installation des pacman-Paktes - apache mit installiert wird!

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root zu werden geben Sie bitte folgenden Befehl ein:

$ su -
Password: 

Konfiguration

/etc/httpd/conf/httpd.conf

Die Konfigurationsdatei /etc/httpd/conf/httpd.conf beinhaltet die Aktivierung der Proxy-Module des Apache HTTP Server. Falls nicht alle Proxy-Module zum Einsatz kommen sollen, können die entsprechenden Inhalte auskommentiert belassen werden!

:!: HINWEIS - Die nachfolgenden Anpassungen sind individuell und vom jeweiligen Einsatzzweck abhängig und ggf. den persönlichen Bedürfnissen anzupassen!

Die Anpassungen werden mit einem vorangestellten Kommentar in der Form

# Tachtler

gekennzeichnet.

(Nur relevanter Ausschnitt)

# Tachtler
# default: #LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
#LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so
#LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
# Tachtler
# default: #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so                                         
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_express_module modules/mod_proxy_express.so
#LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so

Nur die Module

  • proxy_module –> modules/mod_proxy.so
  • proxy_ajp_module –> modules/mod_proxy_ajp.so

sind für die Kommunikation zwischen Apache HTTP Server und dem Apache Tomcat Server über das AJP/1.3-Protokoll notwendig!

/etc/httpd/conf/vhost/vhost.conf

Falls kein virtueller Host definiert ist, können folgende Konfigurationsangaben ebenfalls in der Datei /etc/httpd/conf/httpd.conf definiert werden.

Nachfolgend ein Beispiel für einen virtuellen Host:

#
# tomcat.tachtler.net (Apache Tomcat Applications)
#
<VirtualHost *:80>
    ServerAdmin webmaster@tachtler.net
    ServerName tomcat.tachtler.net
    ServerAlias www.tomcat.tachtler.net
    ServerPath /
 
    <IfModule alias_module>
        Alias /docs /var/lib/tomcat9/webapps/docs
        Alias /host-manager /var/lib/tomcat9/webapps/host-manager
        Alias /manager /var/lib/tomcat9/webapps/manager
    </IfModule>
 
    DocumentRoot "/var/lib/tomcat9/webapps/ROOT"
    <Directory "/var/lib/tomcat9/webapps/ROOT">
            Options -Indexes +FollowSymLinks
            # Tachtler (enable for .htaccess file support)
            # AllowOverride AuthConfig
            AllowOverride None
            # Tachtler (enable for unlimited access)
            Require all granted
    </Directory>
 
    # Protect META-INF-Directory
    <Directory "/var/lib/tomcat9/webapps/ROOT/META-INF">
            AllowOverride None
            Require all denied
    </Directory>
 
    # Protect WEB-INF-Directory
    <Directory "/var/lib/tomcat9/webapps/ROOT/WEB-INF">
            AllowOverride None
            Require all denied
    </Directory>
 
    <IfModule proxy_module>
        <IfModule proxy_ajp_module>
            ProxyRequests Off
 
            ProxyPass /docs ajp://127.0.0.1:8099/docs
            ProxyPassReverse /docs ajp://127.0.0.1:8089/docs
            ProxyPass /host-manager ajp://127.0.0.1:8099/host-manager
            ProxyPassReverse /host-manager ajp://127.0.0.1:8099/host-manager
            ProxyPass /manager ajp://127.0.0.1:8099/manager
            ProxyPassReverse /manager ajp://127.0.0.1:8099/manager
            ProxyPass / ajp://127.0.0.1:8099/
            ProxyPassReverse / ajp://127.0.0.1:8099/
        </IfModule>
    </IfModule>
 
    DirectoryIndex index.htm index.jsp
 
    # ----------------------------------------------------------
    # Logging settings
    # ----------------------------------------------------------
    <IfModule log_config_module>
        ErrorLog /var/log/httpd/tomcat.tachtler.net_error.log
        SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded=yes
        <IfModule logio_module>
            CustomLog /var/log/httpd/tomcat.tachtler.net_access.log combined_deflate "expr=(reqenv('forwarded') != 'yes' && reqenv('dontlog') != 'yes')"
            CustomLog /var/log/httpd/tomcat.tachtler.net_access.log combined_deflate_proxypass "expr=(reqenv('forwarded') == 'yes' && reqenv('dontlog') != 'yes')"
        </IfModule>
    </IfModule>
</VirtualHost>

* Dies ist nur eine Beispielkonfiguration.

Die Bedeutung der einzelnen Befehle kann in der Dokumentation Apache Module mod_proxy detailliert nachgelesen werden.

ProxyRequests Off

Ermöglicht oder Deaktiviert Standard-Forward-Proxy Anfragen. Da hier eine typische Weiterleitung von Anfragen an eine nach gelagertes Back-End-System vorliegt, sollte hier die Funktionalität ausgeschaltet werden.

ProxyPass <URL> ajp://<Back-End-System>:<Port>

Ermöglicht das Zuordnen von URL auf Back-End-Systemen in die Zuständigkeit von Frontend-Systemen. Das Frontend-System agiert hier nicht direkt als konventioneller Proxy oder konventionelles Gateway, sondern ist eher als vorgelagertes System des eigentlichen Servers mit den tatsächlichen Inhalten zu sehen.

ProxyPassReverse <URL> ajp://<Back-End-System>:<Port>

Stellt sicher das auch die Antwort des Back-End-Systems, wie die des Frontend-Systems entsprechend im Header aussieht.

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/apache_http_server_archlinux_-_mod_proxy_ajp_-_apache_tomcat_kommunikation.txt · Zuletzt geändert: 2023/08/11 11:20 von klaus