これまでSquidで運用していたフォワードプロキシをサーバ移転に伴いApacheに置き換えました。Squidの方が柔軟性は高い印象ですが、それほどクリティカルな内容ではなかったので今回は設定の容易さを優先しました。
目次
インストール
Apacheを入れる
yumで一発です。
$ sudo yum install httpd24 httpd24-devel httpd24-tools mod24_ssl
今回入ったのは以下のバージョン。
$ apachectl -v
Server version: Apache/2.4.27 (Amazon)
Server built: Sep 24 2017 23:19:50
Apacheの設定を行う
以下のような設定ファイルを準備します。ポート番号や誰を許可するかといった部分は環境や要件に合わせて変更してください。ファイル名は拡張子が”.conf”になっていれば何でも大丈夫です。
$ sudo vi /etc/httpd/conf.d/fwproxy.conf
Listen 8080
<IfModule proxy_module>
ProxyRequests On
ProxyVia On
ProxyTimeout 300
CustomLog logs/proxy_log combined
<Proxy *>
Order deny,allow
Deny from all
Allow from xxx.xxx.xxx.xxx
</Proxy>
</IfModule>
ポートを開放する
EC2であれば「セキュリティグループ」から、Lightsailであればインスタンスの「ネットワーキング」からconfで指定したポートを開放する必要があります。
EC2の場合
Lightsailの場合
ここではSSHに22、プロキシに8080を使用してますが、ピュアすぎるので実際には別の番号に変更するのがおすすめです。
起動して動作確認
ここまで終わったら早速起動してみましょう。
$ sudo service httpd start
Starting httpd: [ OK ]
無事に立ち上がったらブラウザないしOSの設定を行い動作チェックを行います。
合わせてアクセスログにも吐き出されているかチェックしておきましょう。
自動起動の設定
サーバを立ち上げた際に自動的にhttpdが起動するよう設定をしておきます。
$ sudo chkconfig httpd on
$ chkconfig --list | grep httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
BASIC認証をかける
IPアドレスで認証をかけるのが利用者は何も入力しなくてすみますし、管理者にとってもリスクが少なくて楽なのですが、不特定多数のネットワーク(スタバのWiFiとか(;´∀`))からアクセスしたいという要望があったため、チャチャッと手早くできるところでBASIC認証で制限をかけることにします。
.htpasswdファイルをの作成
ユーザーIDとパスワードのリストをファイルに保存します。この時のパスワードはハッシュ化されている必要があるため、Apacheに付属しているhtpasswd
コマンドを用いると自動で良い感じに保存してくれます。必要なユーザー数分htpasswdコマンドを実行してください。
$ sudo touch /etc/httpd/conf.d/.htpasswd
$ sudo htpasswd -b /etc/httpd/conf.d/.htpasswd (ユーザーID) (パスワード)
Adding password for user foobar
$ cat /etc/httpd/conf.d/.htpasswd
foobar:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
もしパスワードを変更したい場合は、htpasswdコマンドを同じユーザー名で実行すればパスワードが上書かれます。ユーザーを削除したい場合は-D
オプションをつけ削除したいユーザー名を指定すればOKです。
Apacheの設定ファイルを変更
Proxyタグ内を変更しています。他の箇所は変更していません。
$ sudo vi /etc/httpd/conf.d/fwproxy.conf
<Proxy *>
AuthUserFile /etc/httpd/conf.d/.htpasswd
AuthGroupFile /dev/null
AuthName "Basic Auth"
AuthType Basic
Require valid-user
</Proxy>
再起動して動作確認
Apache再起動をし、早速ブラウザからアクセスしてみましょう。見慣れたBASIC認証のダイアログが表示されれば成功です。認証完了後、ブラウザを終了させるまでは再認証は行われません。
$ sudo service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。
同じカテゴリの記事
- [AWS] ECRにDockerイメージをプッシュする
- [AWS] S3へMIMEタイプを自動判定しながらアップロードする – Node.js
- [AWS] Serverless FrameworkでS3にファイルが追加されたらLambdaを起動する
- [AWS] CloudFrontのオリジンを動的に変更する – Lambda@Edge + Node.js
- [AWS] Serverless FrameworkでLambdaをArm64対応する
- [AWS] CloudFront+S3オリジンでindex.htmlを省略する – Lambda@Edge + Node.js
- [AWS] CloudFrontでBASIC認証を行う – Lambda@Edge + Node.js
- [AWS] Comprehendで日本語の感情分析を行う
旧コメント欄(表示のみ)