2

基本的な HTTP 認証を追加して、実稼働 Web サーバーで実行されている開発テスト環境をパスワードで保護する方法を理解するのに苦労しています。メイン サイトとテスト環境はどちらも、AJP プロキシを使用して Tomcat Web アプリケーションの個別のインスタンスを提供する仮想ホストです。Tomcat 環境で web.xml に変更を加えずにテスト環境に一般ユーザーがアクセスできないようにする必要があります。保護は Tomcat ではなく Apache で実現する必要があります。ただし、仮想ホストの ProxyPass および ProxyPassReverse ディレクティブは、.htaccess または <Directory> コントロール ブロックに配置したものの使用をオーバーライドするようですが、<VirtualHost> コントロールの本体で AuthType などのディレクティブを使用できないようです。横にブロックします。私' m は Apache (または Tomcat) の経験があまりなく、どのディレクティブがどこに適用され、どのディレクティブが他のディレクティブをオーバーライドする可能性があるかについて確信が持てません。変更は運用サーバーで行う必要があるため、ダウンタイムが発生する恐れがあるため、簡単に実験することはできません。

httpd.conf 自体は非常に単純です。

LoadModule  proxy_http_module   /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule  headers_module      /usr/lib/apache2/modules/mod_headers.so

LoadFile    /usr/lib/libxml2.so

関連する仮想ホスト ファイル /etc/apache2/sites-available/dev443 は次のとおりです。

<IfModule mod_ssl.c>
<VirtualHost dev.mydomain.com:80443>
    ServerName  dev.mydomain.com:80443
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/dev

    ProxyPass / ajp://127.0.0.1:8010/
    ProxyPassReverse / ajp://127.0.0.1:8010/

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/dev/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All 
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    LogLevel info

    CustomLog /var/log/apache2/ssl_access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    SSLEngine on

    SSLCertificateFile    /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
    SSLCACertificateFile  /etc/ssl/certs/intermediate.crt

    <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
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>
</IfModule>

制御ブロック内で AJP プロキシ構成を移動できますか? 認証をサポートしていることを示唆するこの StackOverflow Q&Aを見ました。制御ブロック内でサポートされますか (解決策は httpd.conf にあります)?

現在、ファイアウォールを使用して IP でフィルタリングしていますが、プロジェクトに関係する一部の人々は、自宅からテスト環境にアクセスする必要があり、インターネット接続用の固定 IP アドレスを持っていないため、パスワード保護によりメンテナンスが少なくて済みます。長期的に見て、リモートワークの柔軟性を高めます。

記録として、次のバージョンが含まれます: Apache: 2.2.14 / Tomcat: 7.0.23 / Java: SE 1.6.0_26-b03 / OS: Ubuntu 10.04 LTS

4

1 に答える 1

2

Shane Madden によって提案された実際の解決策は、ここにあります。ドキュメントは、関連するディレクティブが許可されているコンテキストが含まれていることを指定していますが、コンテンツのソースの違いを除いて、実質的に同等/交換可能であるように見えますが、そこには言及されていません。以下は私が望んでいたことを達成します:

<Location />
    ProxyPass ajp://127.0.0.1:8010/
    ProxyPassReverse ajp://127.0.0.1:8010/
    AuthType Basic
    AuthName "something"
    AuthUserFile /path/to/htpasswd
    Require valid-user
</Location>
于 2012-01-24T10:02:26.500 に答える