[LINUX] Proxy inverse avec Apache 2.4 sur Ubuntu 19.10 Eoan Ermine

Aperçu

--Installez le package apache2 sur Ubuntu

Installez Apache

Installez le package apache2.

$ sudo apt install apache2

Vérifiez la version.

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

Activer mod_proxy et mod_proxy_http

Activez les modules nécessaires pour inverser le proxy vers le site http.

Activez le module Apache avec la commande a2enmod. La spécification de proxy_http dans la commande a2enmod active mod_proxy, qui dépend de mod_proxy_http.

$ 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

Les modules Apache activés sont installés dans / etc / apache2 / mods-enabled /.

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

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

Ce module implémente la fonctionnalité proxy / passerelle d'Apache. Les fonctions de proxy AJP13 (Apache JServe Protocol version 1.3), FTP, CONNECT (pour SSL), HTTP / 0.9, HTTP / 1.0, HTTP / 1.1 sont implémentées. Vous pouvez également le configurer pour se connecter à d'autres modules qui ont des capacités de proxy pour ces protocoles et d'autres.

La fonctionnalité proxy d'Apache est divisée en plusieurs modules en plus de mod_proxy: mod_proxy_http, mod_proxy_ftp, mod_proxy_ajp, mod_proxy_balancer, mod_proxy_connect. Donc, si vous souhaitez utiliser la fonctionnalité d'un proxy particulier, vous devez inclure mod_proxy et le module approprié dans le serveur (soit statiquement au moment de la compilation, soit chargé dynamiquement par LoadModule).

Activez également mod_ssl lors du reverse proxy vers le serveur https

mod_ssl est activé avec a2enmod ssl, et mod_setenvif, mod_mime et mod_socache_shmcb sont également activés comme dépendances.

$ 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

Configurer un fichier de configuration

Cette fois, copiez le fichier 000-default.conf dans le répertoire / etc / apache2 / sites-available pour créer un fichier appelé my-proxy.conf.

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

Modifiez le contenu du fichier my-proxy.conf.

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

Remplacez le fichier my-proxy.conf par ce qui suit:

my-proxy.conf


<VirtualHost *:80>

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

  # localhost:Proxy inverse vers 8888
  ProxyPass /foo/ http://127.0.0.1:8888/foo/
  ProxyPassReverse /foo/ http://127.0.0.1:8888/foo/

  #Proxy inverse vers le site http
  ProxyPass /bar/ http://example.com/bar/
  ProxyPassReverse /bar/ http://example.com/bar/

  #Proxy inverse vers le site https
  SSLProxyEngine On
  ProxyPass /baz/ https://example.org/baz/
  ProxyPassReverse /baz/ https://example.org/baz/

</VirtualHost>

Activez my-proxy.conf et désactivez 000-default.conf

Activez my-proxy.conf avec la commande a2ensite.

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

Désactivez 000-default.conf avec la commande a2dissite.

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

Redémarrez Apache pour que les paramètres prennent effet

$ sudo systemctl restart apache2

Vous pouvez vérifier que le proxy inverse fonctionne avec la commande curl.

$ 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>

À propos de l'erreur

Si cela ne fonctionne pas comme prévu, vérifiez la sortie du message d'erreur dans /var/log/apache2/error.log.

Erreur lorsque seul mod_proxy est installé et mod_proxy_http n'est pas installé

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.

Erreur lorsque mod_ssl n'est pas installé

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)

Matériel de référence

Recommended Posts

Proxy inverse avec Apache 2.4 sur Ubuntu 19.10 Eoan Ermine
Installez Apache Tomcat 9 sur Ubuntu 19.10 Eoan Ermine Hello World
Installez Apache 2.4 sur Ubuntu 19.10 Eoan Ermine et exécutez CGI
Comment mettre à jour la sécurité sur Ubuntu 19.10 Eoan Ermine
Montez S3 sur Ubuntu avec goofys
Paramètres de filtrage de paquets utilisant iptables sur Ubuntu 19.10 Eoan Ermine et leur persistance
Django + Apache avec mod_wsgi sur Windows Server 2016
Configurer un proxy inverse vers le serveur https avec CentOS Linux 8 + Apache mod_ssl
Dask ne peut pas être installé sur Ubuntu avec pip
Créer un environnement python avec pyenv sur EC2 (ubuntu)
[0] Construction de l'environnement TensorFlow-GPU avec Anaconda sur Ubuntu
Sortez de force DLNA avec ReadyMedia + Reverse Proxy
Shebang sur Ubuntu 20.04
Proxy inverse d'Apache sur GCP vers Raspeye Apache local (Wake on LAN over NAT [3])
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Traitement de pip et des erreurs d'installation associées sur Ubuntu 18.04