NginxでHTTP/HTTPSとリバースプロキシを理解する
nginx を使い、HTTP / HTTPS、リダイレクト、リバースプロキシ、LDAP 認証を理解するための解説。
初めて nginx を読む場合は、次の順番で進める。
client -> nginx ├─ listen 80 │ └─ return 301 https://... └─ listen 443 ssl ├─ static file ├─ proxy_pass -> backend application └─ LDAP authentication ├─ LDAP auth module -> LDAP Bind ├─ auth_pam -> PAM -> libpam-ldapd -> nslcd -> LDAP Bind └─ auth_request -> Python helper -> ldapwhoami -> LDAP Bindnginx で LDAP 認証を行う方法は複数ある。LDAP 認証モジュールを用意できる環境では、nginx から LDAP Bind する構成を使える。追加モジュールの入手に制約がある環境では、PAM 経由や auth_request 経由の helper 構成を使う。
このノートでは、LDAP 認証モジュールを用意できないオフライン環境向けに、PAM 経由の構成と、PAM 認証モジュールも使えない場合の Python helper 構成を扱う。
HTTPS 証明書の作成は Server Certificateの作成 を参照する。LDAP と PAM の役割は NSSとPAMによるLinuxログイン を参照する。
nginx公式ドキュメント
Section titled “nginx公式ドキュメント”-
Module ngx_http_core_module: listen
listen、server、locationなど HTTP core module の基本ディレクティブ。 -
Module ngx_http_ssl_module
listen 443 ssl、ssl_certificate、ssl_certificate_keyなど TLS 設定。 -
Module ngx_http_rewrite_module: return HTTP から HTTPS へのリダイレクトなどで使う
returnディレクティブ。 -
Module ngx_http_proxy_module: proxy_pass リバースプロキシで使う
proxy_passと URI の扱い。 -
Module ngx_http_auth_request_module サブリクエストの結果でアクセス制御を行う
auth_request。 -
nginx-auth-ldap
ngx_http_auth_ldap_moduleを提供する外部 LDAP 認証モジュール。
Debianパッケージ
Section titled “Debianパッケージ”-
libnginx-mod-http-auth-pam nginx から PAM 認証を使うためのモジュール。
-
nslcd NSS / PAM から LDAP を参照するためのデーモン。
-
libpam-ldapd PAM から LDAP 認証を使うためのモジュール。