View on GitHub

Today I Learned

Software Engineering Blog

HTTPサービス

ポイント

理解しておきたい用語と概念

習得しておきたい技術

Apacheの基本的な設定

Apacheの設定

ディレクティブ

httpd.confの設定項目はディレクティブと呼ばれる

サーバ処理関連のディレクティブ

ログ関連のディレクティブ

外部設定ファイル関連のディレクティブ

例)全てのユーザのホームディレクトリ「/home/*」において、外部設定ファイル「.htaccess」による設定をすべて許可する場合

AccessFileName .htaccess
<Directory "/home/*">
AllowOverride All
</Directory>

モジュール関連のディレクティブ

クライアントアクセスの認証

基本認証(BASIC認証)

ダイジェスト認証

ダイジェスト認証の設定例

<Directory "/home/test/html">
AuthType Digest
AuthName "private"
AuthUserFile /tmp/htdigest
Require user test1 test2
</Directory>

ホストベースのアクセス認証

認証のディレクティブ

Requireディレクティブ

Apache2.2までのアクセス制御設定の例

<Directory "/var/www/html/private">
Order Deny,Allow
Deny from all
Allow from 192.168.10.0/24
</Directory>

Apache2.4のアクセス制御設定の例(単独条件)

Require ip 192.168.0

Apache2.4のアクセス制御設定の例(複数条件)

<Directory "/var/www/html/private">
<RequireAny>
Require ip 192.168.10
Require group root
</RequireAny>
</Directory>

サーバ情報の取得

HTTPS向けのApacheの設定

SSL

証明書

関連ファイル

opensslコマンド

ディレクティブ

ssl.confのディレクティブ

キャッシュプロキシとしてのSquidの実装

プロキシサーバの利点

Squid

設定ファイル

/etc/squid/squid.conf

アクセス制御の設定

ACLの設定例

acl all src 0.0.0.0/0.0.0.0
acl localmembers src 192.168.10.0/255.255.255.0
acl SSL port 443
acl OK_port port 80 443
acl CONNECT method CONNECT
acl clients srcdomain test.com
acl eigyobi time MTWHF 09:00-18:00

http_access allow localmembers OK_port
http_access deny !OK_port
http_access deny CONNECT !SSL
http_access allow clients
http_access allow eigyobi

Nginxの実装

Nginx

設定

/etc/nginx/nginx.conf

ディレクティブ

nginx.confのディレクティブ

全体的な設定

...
http {
    httpサーバとしての共通の設定
    server {
        バーチャルホストの設定
        location URIのパスの条件 {
            条件にマッチしたリクエストURIに対する設定
        }
        ...
    }
    ...
}

「www.example.com」へのリクエスト全てを「192.168.1.10」へ転送する場合

server {
    listen 80;
    server_name www.example.com;
    location / {
        proxy_pass http://192.168.1.10/
        proxy_set_header Host $host;
        proxy_pass_header Server;
    }
}

リバースプロキシの設定