トラフィックをバックエンドサーバーに転送する前に、基本認証でリバースプロキシを構成しようとしています。誰も私に解決策を与えることができます。
ここの例:
ユーザー(インターネット)->リバースプロキシ/ vhostsサーバー(ここで基本認証を追加する必要があります)->バックエンドサーバー(非認証)
これは、データベースに対するhttps経由の基本認証を達成するために使用した構成です。私のバックエンドサーバーはTomcatを実行しており、AJPを使用してTomcatに接続します。面白いポート番号(4443)は、標準ポート(443)が既に使用されていて、同じポートに複数のhttpsサービスを構成したくなかったためです。
<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>
まず、Apache2にutilsパッケージがあるかどうかを確認します
Sudo apt-get install Apache2-utils
次に、ユーザー名とパスワードを設定します。
Sudo htpasswd -c /etc/Apache2/.htpasswd <username>
その後、認証を使用するようにリバースプロキシを編集します
<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>
少なくとも、Apacheを更新します
Sudo service Apache2 reload