コンテンツにスキップ

NginxでHTTP/HTTPSとリバースプロキシを理解する

nginx を使い、HTTP / HTTPS、リダイレクト、リバースプロキシ、LDAP 認証を理解するための解説。


初めて nginx を読む場合は、次の順番で進める。

  1. nginxの全体像
  2. serverとlocation
  3. HTTP・HTTPS・リダイレクト
  4. リバースプロキシ
  5. PAMを通したLDAP認証

  1. HTTP/HTTPSとリダイレクトの設定
  2. リバースプロキシの設定
  3. PAM経由LDAP認証の設定
  4. Python auth_request LDAP認証の設定

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 Bind

nginx で LDAP 認証を行う方法は複数ある。LDAP 認証モジュールを用意できる環境では、nginx から LDAP Bind する構成を使える。追加モジュールの入手に制約がある環境では、PAM 経由や auth_request 経由の helper 構成を使う。

このノートでは、LDAP 認証モジュールを用意できないオフライン環境向けに、PAM 経由の構成と、PAM 認証モジュールも使えない場合の Python helper 構成を扱う。

HTTPS 証明書の作成は Server Certificateの作成 を参照する。LDAP と PAM の役割は NSSとPAMによるLinuxログイン を参照する。


  • libnginx-mod-http-auth-pam nginx から PAM 認証を使うためのモジュール。

  • nslcd NSS / PAM から LDAP を参照するためのデーモン。

  • libpam-ldapd PAM から LDAP 認証を使うためのモジュール。