1

私はしばらくの間、この問題に苦労してきました。分解してみましょう:

当社の Web サイトのほとんどをホストする apache2 サーバーがあります。各 Web サイトは個別の vhost です。この仮想ホストの 1 つは、社内の UI デザイナーが最新のドラフトとプロジェクトを社内ユーザーとサードパーティ クライアントの両方に提示するために使用されます。現時点では、この VHost は、次のディレクティブを使用して Vhost 構成ファイルからパスワードで保護されています。

<Directory /var/www/>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride all
   Order allow,deny
   Allow from all
   AuthUserFile /home/secure/passwords
   AuthName "Username and password required"
   AuthType Basic
   Require valid-user
</Directory>

私が必要としているのは、特定の IP 範囲を意味する内部ユーザーがこの Web サイトを利用できるようにすることです (したがって、パスワード プロンプトは表示されません)。Allow from 192.168.xxx.xxx上記の命令セットでオプションを使用しようとしました。ただし、これは内部 IP を通過させません (引き続きパスワードを要求します)。そこで、当社の外部 IP アドレス (「what's my IP Web サイト」で見つけることができます) を使用しようとしました。それも運が悪い。

したがって、最後の試みとして、明らかに別の ServerName を使用する 2 つ目の vhost を作成しました。また、構成ファイルで競合が発生しないようにするために、/var/www へのシンボリック リンクを作成し、それを www2 と呼びました。したがって、2 番目の vhost ファイルの Directory ディレクティブは次のようになります。

<Directory /var/www2/>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride none
   Order allow,deny
   Allow from all
</Directory>

ただし、現在の構成では両方のホストでパスワード保護を取得しているため、構成ファイルは明らかに競合しています。最初の仮想ホストでこれを無効にすると、両方で無効になります。

どのディレクトリにも .htaccess ファイルがないため、構成を上書きするものはありません。apache2.conf ファイルには、Auth に関連する定義はありません。

詳細が必要かどうかわかりませんが、何でもお気軽にお尋ねください。

助けてくれてありがとう!

----編集----私の方法が正しいとは100%言えないことを明記したいだけです。2 つの VHost をセットアップすることは、私の問題の解決策ではないかもしれません。誰かがそれを行うためのより良い方法を考えているなら、私は提案を受け入れます. 要するに、1 つの Web サイトを内部ユーザーが利用できるようにし、それ以外のユーザーはパスワードで保護する必要があるということです。

乾杯!

4

1 に答える 1

0

Apache のSatisfy ディレクティブを使用してこれを解決しようとしましたか? 例えば:

  <Directory /var/www/>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride all
   Order allow,deny
   Allow from all
   AuthUserFile /home/secure/passwords
   AuthName "Username and password required"
   AuthType Basic
   Require valid-user

   Allow from 192.168.1
   Satisfy Any 
  </Directory>

詳細はこちら

于 2012-11-01T10:58:11.853 に答える