[LINUX] Reverse Proxy mit Apache 2.4 unter Ubuntu 19.10 Eoan Ermine

Überblick

--Installieren Sie das Apache2-Paket unter Ubuntu

Installieren Sie Apache

Installieren Sie das Apache2-Paket.

$ sudo apt install apache2

Überprüfe die Version.

$ /usr/sbin/apachectl -v
Server version: Apache/2.4.41 (Unix)
Server built:   Nov  9 2019 07:53:54

Aktivieren Sie mod_proxy und mod_proxy_http

Aktivieren Sie die Module, die zum Umkehren des Proxys zur http-Site erforderlich sind.

Aktivieren Sie das Apache-Modul mit dem Befehl a2enmod. Durch Angabe von proxy_http im Befehl a2enmod wird mod_proxy aktiviert, das von mod_proxy_http abhängig ist.

$ sudo a2enmod proxy_http
Considering dependency proxy for proxy_http:
Enabling module proxy.
Enabling module proxy_http.
To activate the new configuration, you need to run:
  systemctl restart apache2

Aktivierte Apache-Module werden in / etc / apache2 / mods-enabled / installiert.

$ ls -la /etc/apache2/mods-enabled/ | grep proxy
lrwxrwxrwx 1 root root 28 Januar 27 12:37 proxy.conf -> ../mods-available/proxy.conf
lrwxrwxrwx 1 root root 28 Januar 27 12:37 proxy.load -> ../mods-available/proxy.load
lrwxrwxrwx 1 root root 33 27. Januar 12:48 proxy_http.load -> ../mods-available/proxy_http.load

mod \ _proxy \ -Apache HTTP Server Version 2 \ .4

Dieses Modul implementiert die Proxy- / Gateway-Funktionalität von Apache. AJP13 (Apache JServe Protocol Version 1.3), FTP, CONNECT (für SSL), HTTP / 0.9, HTTP / 1.0, HTTP / 1.1 Proxy-Funktionen sind implementiert. Sie können es auch so konfigurieren, dass eine Verbindung zu anderen Modulen hergestellt wird, die über Proxy-Funktionen für diese und andere Protokolle verfügen.

Die Proxy-Funktionalität von Apache ist zusätzlich zu mod_proxy in mehrere Module unterteilt: mod_proxy_http, mod_proxy_ftp, mod_proxy_ajp, mod_proxy_balancer, mod_proxy_connect. Wenn Sie also die Funktionalität eines bestimmten Proxys nutzen möchten, müssen Sie mod_proxy und das entsprechende Modul in den Server aufnehmen (entweder statisch zur Kompilierungszeit oder dynamisch von LoadModule geladen).

Aktivieren Sie auch mod_ssl, wenn Sie das Reverse-Proxying zum https-Server durchführen

mod_ssl wird mit a2enmod ssl aktiviert, und mod_setenvif, mod_mime und mod_socache_shmcb werden ebenfalls als Abhängigkeiten aktiviert.

$ sudo a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
  systemctl restart apache2

Richten Sie eine Konfigurationsdatei ein

Kopieren Sie dieses Mal die Datei 000-default.conf in das Verzeichnis / etc / apache2 / sites-available, um eine Datei mit dem Namen my-proxy.conf zu erstellen.

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/my-proxy.conf

Ändern Sie den Inhalt der Datei my-proxy.conf.

$ sudo vim /etc/apache2/sites-available/my-proxy.conf

Ersetzen Sie die Datei my-proxy.conf durch Folgendes:

my-proxy.conf


<VirtualHost *:80>

  # /etc/apache2/sites-available/000-default.Inhalt kopiert von conf
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  # localhost:Proxy auf 8888 umkehren
  ProxyPass /foo/ http://127.0.0.1:8888/foo/
  ProxyPassReverse /foo/ http://127.0.0.1:8888/foo/

  #Reverse-Proxy zur http-Site
  ProxyPass /bar/ http://example.com/bar/
  ProxyPassReverse /bar/ http://example.com/bar/

  #Proxy auf https-Site umkehren
  SSLProxyEngine On
  ProxyPass /baz/ https://example.org/baz/
  ProxyPassReverse /baz/ https://example.org/baz/

</VirtualHost>

Aktivieren Sie my-proxy.conf und deaktivieren Sie 000-default.conf

Aktivieren Sie my-proxy.conf mit dem Befehl a2ensite.

$ sudo a2ensite my-proxy
Enabling site my-proxy.
To activate the new configuration, you need to run:
  systemctl reload apache2

Deaktivieren Sie 000-default.conf mit dem Befehl a2dissite.

$ sudo a2dissite 000-default
Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2

Starten Sie Apache neu, damit die Einstellungen wirksam werden

$ sudo systemctl restart apache2

Sie können überprüfen, ob der Reverse-Proxy mit dem Befehl curl funktioniert.

$ curl -i http://localhost/foo/
HTTP/1.1 200 
Date: Mon, 27 Jan 2020 11:19:56 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html;charset=UTF-8
Content-Language: ja-JP
Vary: Accept-Encoding
Transfer-Encoding: chunked

<html><body>Hello, world.</body></html>

Über den Fehler

Wenn es nicht wie erwartet funktioniert, überprüfen Sie die Ausgabe der Fehlermeldung in /var/log/apache2/error.log.

Fehler, wenn nur mod_proxy installiert ist und mod_proxy_http nicht installiert ist

AH01144: No protocol handler was valid for the URL /foo/ (scheme 'http'). If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

Fehler, wenn mod_ssl nicht installiert ist

AH01961: SSL Proxy requested for your.example.net:80 but not enabled [Hint: SSLProxyEngine]
AH00961: HTTPS: failed to enable ssl support for XXX.XXX.XXX.XXX:443 (example.org)

Referenzmaterial

Recommended Posts

Reverse Proxy mit Apache 2.4 unter Ubuntu 19.10 Eoan Ermine
Installieren Sie Apache Tomcat 9 unter Ubuntu 19.10 Eoan Ermine Hello World
Installieren Sie Apache 2.4 unter Ubuntu 19.10 Eoan Ermine und führen Sie CGI aus
So aktualisieren Sie die Sicherheit unter Ubuntu 19.10 Eoan Ermine
Mount S3 auf Ubuntu mit Goofys
Paketfiltereinstellungen mit iptables unter Ubuntu 19.10 Eoan Ermine und deren Persistenz
Django + Apache mit mod_wsgi unter Windows Server 2016
Richten Sie mit CentOS Linux 8 + Apache mod_ssl einen Reverse-Proxy für den https-Server ein
Dask kann unter Ub nicht mit pip auf Ubuntu installiert werden
Erstellen Sie eine Python-Umgebung mit pyenv auf EC2 (Ubuntu)
[0] TensorFlow-GPU-Umgebungskonstruktion, die mit Anaconda unter Ubuntu erstellt wurde
Bringen Sie DLNA mit ReadyMedia + Reverse Proxy zwangsweise heraus
Shebang auf Ubuntu 20.04
Reverse Proxy von Apache auf GCP zu lokalem Raspeye Apache (Wake on LAN über NAT [3])
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Umgang mit Pip und damit verbundenen Installationsfehlern unter Ubuntu 18.04