Essayer de configurer mon proxy inverse avec une authentification de base avant de transférer le trafic vers mon serveur principal. Quelqu'un peut-il me donner une solution.
Exemple ici:
Utilisateur (Internet) -> serveur proxy inverse/vhosts (besoin d'ajouter l'authentification de base ici) -> serveur principal (non authentifié)
Vous pouvez suivre les instructions ici: Authentification, Autorisation et Contrôle d'accès . La principale différence pour votre proxy inverse est que vous souhaiterez placer les éléments d'authentification dans un bloc d'emplacement, même si les documents indiquent qu'ils ne sont autorisés que dans les blocs d'annuaire:
<Location />
AuthType Basic
...
</Location>
En dehors du bloc Emplacement, vous pouvez placer vos commandes proxy, telles que:
ProxyPass / http://localhost:8080/
Voici la configuration que j'ai utilisée pour accomplir l'authentification de base sur https contre une base de données. Mon serveur principal exécute Tomcat et je me connecte à lui en utilisant AJP. Le drôle de numéro de port (4443) est dû au fait que le port standard (443) était déjà utilisé, et je ne voulais pas configurer plusieurs services https sur le même port.
<IfModule mod_ssl.c>
NameVirtualHost *:4443
<VirtualHost *:4443>
ServerAdmin webmaster@localhost
ServerName ws.myserver.se
ServerAlias ws.myserveralias.se
ErrorLog /var/log/Apache2/ajpProxy.error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel info
CustomLog /var/log/Apache2/ajpProxy.log combined
DBDriver mysql
DBDParams "Host=127.0.0.1 port=3306 user=proxyAuthUser pass=yourDbPasswordHere dbname=yourDbName"
DBDMin 4
DBDKeep 8
DBDMax 20
DBDExptime 300
<Proxy *>
# core authentication and mod_auth_basic configuration
# for mod_authn_dbd
AuthType Basic
AuthName "Backend auth name"
AuthBasicProvider dbd
# core authorization configuration
Require valid-user
# mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery \
"SELECT password FROM user WHERE emailAddress = %s"
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
# SSL Engine Switch:
# Enable/Disable SSL for this virtual Host.
SSLEngine on
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/Apache2.2-common/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/Apache2/ssl/yourCertificateFile.crt
SSLCertificateKeyFile /etc/Apache2/ssl/yourPrivateKeyFile.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
Tout d'abord, vérifiez si votre Apache2 a le paquet utils
Sudo apt-get install Apache2-utils
Ensuite, définissez le nom d'utilisateur et le mot de passe.
Sudo htpasswd -c /etc/Apache2/.htpasswd <username>
Après cela, modifiez votre proxy inverse pour utiliser l'authentification
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://someaddress:1234/
ProxyPassReverse / http://someaddress:1234/
Timeout 5400
ProxyTimeout 5400
ServerName dev.mydomain.com
ServerAlias *.dev.mydomain.com
<Proxy *>
Order deny,allow
Allow from all
Authtype Basic
Authname "Password Required"
AuthUserFile /etc/Apache2/.htpasswd
Require valid-user
</Proxy>
</virtualhost>
Au moins, mettez à jour votre Apache
Sudo service Apache2 reload