LoginSignup
1
0

[Apache]IP制限とBasic認証の豪華2本立て

Posted at

HPの特定ページにアクセス制限かけといて

アプリやシステム作るのは得意だけど、
インフラまわりとかマジでバブちゃんなのでマジで今回の実績で給料上げて欲しい(切実

つい最近、社内PJの【お手伝い】でHP作成をしてたわけで、その要望の中で、

  • サイト自体は1つのURL
  • その中で特定URL(管理者向けページ)だけはタイトルの通りIP制限とBasic認証を同時に掛ける

みたいなのがあり、IP制限だけ とか Basic認証 だけの設定は探せばいくらでも出てくるけど、
両方いっぺんに使いたいっていうのが全然見つからなかったので、
同じことで悩んでる子羊達にむけてちょっと色々と調べて出来た結果を載せようかと。
※ちなメインのPJの 片手間 業後の社内バイトとしてやってるので【お手伝い】

んなわけで、答え(コレが欲しいんやろ

.htaccess
<Directory "/var/www/html">
    AllowOverride None
    Require all granted
    # 特定URLの時にIP制限とBasic認証をかけるやつ
    <If "%{REQUEST_URI} =~ /adminPage/">
      <RequireAll>
        <RequireAny>
          Require ip xxx.xxx.xxx.xxx # 許容するIPを記述
          Require ip xxx.xxx.xxx.xxx # 許容するIPを記述
          Require ip xxx.xxx.xxx.xxx # 許容するIPを記述
        </RequireAny>

        # Add Basic
        AuthType Basic
        AuthName "Basic認証だよ"
        AuthBasicProvider file
        AuthUserFile /etc/httpd/conf/.htpasswd # ID/PASSはファイルで管理
        Require valid-user
      </RequireAll>
    </If>
</Directory>

ざっくり解説

他のサイトとか調べるとLocationタグとかに設定を書いてたけど、Directoryタグに色々とかけるんなら、もう時間も余裕もないためソレでいいのかなと思い記述しました。
※要件通り問題なく動くからひとまずおk

  • Ifタグで特定のURL部分の時の分岐を記載し、
  • RequireAllタグでこのタグの中の条件が全部あってる時にしか動かないみたいな書き方をして、
  • RequireAnyタグでIP制限の記述を書いて、
  • 最後にBasic認証の処理を書くって感じにしました。

htpasswdの作り方とかに関しては、いっぱい情報あるからここでは書かないよ。
※いつかネタに困ったら書くけど

元も子もないまとめ

公式読んだら普通に書いてあったので、他の人のちゃんと動くかわからん古い情報のサンプルをコピペするよりも、ちゃんと公式読んでから他の人のやつコピペして使えって話だよね。。。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0