IT

SquidとNginx【LPIC level2】

プロキシサーバーとは、内部のネットワークとインターネットの境界で動作し、両者間のアクセスを代理して行うものです。

プロキシサーバーを使うメリットは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の他の分野へ移動できる全体ページへは以下リンクからお願いします。