プロキシサーバーとは、内部のネットワークとインターネットの境界で動作し、両者間のアクセスを代理して行うものです。
プロキシサーバーを使うメリットは2つあります。
1つ目は、特定のWebサイトへのアクセスを制限するなど、クライアントからのアクセスを制御できることです。
2つ目は、一度アクセスされたデータをキャッシュとして保存し、再度同じアクセスがあった場合はキャッシュデータを返すことで、アクセスを高速化し、ネットワークトラフィックを削減することが出来ることです。
プロキシサーバーの設定
Squidの基本設定
Linuxで最も利用されているプロキシサーバーはSquidです。
Squidの設定ファイルはsquid.confです。
以下は、squid.confの主な設定項目です。
設定項目 | 説明 |
http_port [IPアドレス:]ポート番号 | Squidが利用するポート番号 |
hierarchy_stoplist 文字列 | キャッシュを利用しない文字列を指定 |
maximum_object_size バイト数 | キャッシュさえるデータの最大サイズ |
minimum_object_size バイト数 | キャッシュされるデータの最小サイズ |
maximum_object_size_in_memory バイト数 | メモリにキャッシュされる最大ファイルサイズ |
ipcache_size 数 | IPアドレスの名前解決をキャッシュする数 |
cache_dir ディレクトリ名 | キャッシュディレクトリとパラメータ |
cache_mem バイト数 | 総メモリの最大量 |
cache_log ファイル名 | キャッシュのログ |
request_header_max_size バイト数 | HTTPリクエストのヘッダの最大サイズ |
request_body_max_size バイト数 | HTTPリクエストのボディの最大サイズ |
acl acl名 aclタイプ 文字列|ファイル名 | アクセスコントロールリストの定義 |
http_access allow|deny ACL名 | アクセスコントロールリストの制御 |
auth_param 認証方式 program 認証プログラム パスワードファイル | ユーザー認証の方式等を設定 |
アクセス制御の設定
アクセス制限の設定は、aclとhttp_accessで行います。aclでは、ホストやプロトコルの集合にアクセスコントロールリスト名を付けます。
acl ACL名 ACLタイプ 文字列またはファイル名
以下は、ACLタイプです。
ACLタイプ | 説明 |
src IPアドレス/マスク | クライアントのIPアドレスとマスク |
dst IPアドレス/マスク | 宛先のIPアドレスとマスク |
srcdomain ドメイン名 | クライアントのドメイン名 |
dstdomain ドメイン名 | 宛先のドメイン名 |
port ポート番号 | 宛先のポート番号 |
arp MACアドレス | MACアドレス |
proto プロトコル名 | プロトコル |
method メソッド名 | HTTPリクエストのメソッド |
time 曜日 時間(10:00-12:00) | 有効な時間を指定 |
url_regex 文字列 | 正規表現を使ったURL |
urlpath_regex 文字列 | 正規表現を使ったURL (プロトコルとホスト名を除く) |
proxy_auth ユーザー名 | ユーザー認証の対象 |
アクセスコントロールリストに対しての制御をhttp_accessで設定します。
Nginxとリバースプロキシ
Nginxの設定
Nginxとは、高速で動作し負荷に強いWebサーバーです。
リバースプロキシサーバー、メールプロキシサーバーの機能も持っています。
メイン設定ファイルは「/etc/nginx/nginx.conf」です。
以下は、nginx.confの主なディレクティブです。
ディレクティブ | 説明 |
http {} | httpサーバーとしての設定 (mainコンテキスト) |
server {} | バーチャルホストの設定 (httpコンテキスト) |
location プレフィックス URIのパス条件 {} | 条件にマッチするリクエストURIに対する設定 (sever、locationコンテキスト) |
listen IPアドレス:ポート; | リクエストを受け付けるIPアドレスとポート番号(デフォルト80)の指定 (severコンテキスト) |
server_name 名前 …; | バーチャルホストの名前の指定 (severコンテキスト) |
index ファイル名 …; | インデックスとして返すファイル名の指定 (http、server、locationコンテキスト) |
root パス; | Webで公開するHTMLを保存する最上位のディレクトリの指定 (http、server、locationコンテキスト) |
proxy_pass URL; | プロキシ先の指定 (locationコンテキスト) |
proxy_set_header フィールド 値; | プロキシ先に送られるリクエストヘッダフィールドの再定義または追加 (http、server、locationコンテキスト) |
proxy_pass_header フィールド; | プロキシ先からクライアントへの通貨を許可するヘッダフィールドの指定 (http、server、locationコンテキスト) |
fastcgi_pass IPアドレス:ポート; | FastCGIサーバーの指定 (locationコンテキスト) |
fastcgi_param パラメータ 値; | FastCGIサーバーに渡すパラメータ設定の設定 (http、server、locationコンテキスト) |
リバースプロキシ
Nginxはリバースプロキシサーバーとしてよく利用されます。
リバースプロキシとは、Webサーバーとクライアントの間で稼働し、Webサーバーのコンテンツをキャッシュしてクライアントに提供するサーバーです。
リバースプロキシを使うとWebサーバーの負荷を軽減できます。
今回はプロキシサーバーのSquidとNginxについてでした。
最後まで読んで頂き、ありがとうございました。
LPIC level2の他の分野へ移動できる全体ページへは以下リンクからお願いします。