JoergFiedler.freebsd-jailed-nginx
freebsd-jailed-nginx
この役割は、localhost:{80,443}
で受信リクエストをリッスンする、ジャイル化されたnginxサーバーを提供します。
この役割は、Let's Encryptの機能を使用した正常なSSL構成も提供します。
カスタムのdhparam.pem
ファイルを提供する必要があります。プレイブックの横にあるfiles
フォルダー内に、サーバー名(例:example.com
)にちなんだフォルダーを作成してください。
証明書は、定期的に「weekly」に検証/生成されます。サーバーがすぐに稼働するように、自己署名のlocalhost証明書がインストールされます。ジャイルが開始された後、以下のコマンドを使用してLet's Encryptの証明書を手動で生成できます。
/usr/local/bin/acme-client-weekly.sh
他の役割がWordPressやJoomlaのインストールを提供するために使用される場合があります。webrootディレクトリにアクセスするために、SFTPサーバーも構成されており、公開鍵認証によって保護されています。
この役割は、トラフィックをドメイン固有のジャイルまたは外部サイトに転送するSSL終端プロキシを作成するためにも使用できます。
要件
この役割は、フレッシュなFreeBSDインストールで使用することを意図しています。VirtualBoxとEC2用のプロバイダーを持つVagrant Boxを使用できます。
役割変数
nginx_letsencrypt_enabled
Let's Encryptによるすべてのnginxサーバーの自動証明書管理を有効にするには、yes
に設定します。有効にすると、acme-client
ツールがインストールされ、サーバーのための構成が準備されます。デフォルト: no
.
nginx_letsencrypt_acme_private_key
acmeクライアントがLet's Encryptと通信するために使用する秘密鍵を指定するためにこの変数を使用します。デフォルト: '''
.
nginx_letsencrypt_api_host
通信対象のサーバーのホスト名。デフォルト: acme-v02.api.letsencrypt.org
.
nginx_tarsnap_enabled
すべてのnginxサーバーのwebrootをtarsnapを使用してバックアップするかどうかを指定します。ホスト自体で有効にする必要があります(tarsnap_enabled: yes
)。デフォルト: {{ tarsnap_enabled | default("no") }}
。
nginx_syslogd_server
nginxがエラーログとアクセスログを書くために使用すべきsyslogdサーバー。デフォルト: {{ syslogd_server | default("localhost") }}
。
nginx_pf_redirect
http(s)ポートへのトラフィックがこのジャイルのnginxサーバーに転送される場合、yes
に設定します。デフォルト: no
.
有効にすると、ホストの外部インターフェースのポート80と443に向けられたトラフィックがこのジャイルに転送されます。この設定は、nginx_pf_rdrs
変数を使用して変更できます。
nginx_pf_rdrs
ホストからジャイルへのトラフィックのリダイレクト方法を構成します。デフォルト設定は次のとおりです。
nginx_pf_rdrs:
- ports:
- 'http'
- 'https'
ext_ip: '{{ host_net_ext_ip }}'
ext_if: '{{ host_net_ext_if }}'
これは、外部IPでホストの外部インターフェースに到着するすべてのトラフィックが、ジャイル内で実行されているNGINXのポートhttp
にリダイレクトされることを意味します。
nginx_servers
このジャイルのnginxサーバーインスタンスの配列を保持します。異なるタイプのnginxジャイルを構成するために使用できます。例:https終端プロキシ、複数の静的ウェブサイトの提供、またはphp対応ウェブサイトなど。以下の例セクションを参照してください。
aliases: ''
basic_auth_enabled: no
force_www: no
https:
enabled: no
letsencrypt_enabled: no
key_file: 'localhost-key.pem'
certbundle_file: 'localhost-certbundle.pem'
dhparam_file: 'localhost-dhparam.pem'
name: 'localhost'
php_fpm_enabled: no
sftp:
user: '{{ server_sftp_user }}'
uuid: '{{ server_sftp_uuid }}'
authorized_keys: '{{ server_sftp_authorized_keys }}'
home: '{{ server_home }}'
port: '{{ server_sftp_port }}'
sftp_enabled: no
webroot: '{{ server_webroot }}'
aliases
サーバーがserver_name
に向けられたもの以外のリクエストを処理する必要がある場合は、ドメイン名のリストをスペースで区切って提供します。デフォルトサーバーを作成するにはdefault
を使用します。デフォルト: ''
.
basic_auth_enabled
このサーバーのために基本認証を有効にするにはtrue
に設定します。htpasswd
ファイルを提供し、{{ server_name }}/htpasswd
に保存する必要があります。
force_www
サーバーがwww
ドメイン名にリダイレクトする必要があるかどうかを指定します。yes
に設定すると、すべてのリクエストがwwwサブドメインにリダイレクトされます。www.name
をaliases
プロパティに追加する必要があります。デフォルト: no
.
https
SSL/HTTPSに関連する設定。
enabled
サーバーのSSL/HTTPSを有効にするにはyes
に設定します。HTTPのみのリクエストはHTTPSにリダイレクトされます。
letsencrypt_enabled
このサーバーに対してhttpsが有効になり、証明書がLet's Encryptおよびacme-client
によって作成されるように指定します。この機能を有効にするには、nginx_letsencrypt_enabled
をyes
に設定する必要があります。デフォルト: no
.
name
このサーバーのドメイン名(例:example.com
)。デフォルト: default
.
php
PHP関連の設定。
fpm_enabled
php-fpm
パッケージをインストールして有効にするにはtrue
に設定します。有効にすると、nginx_php_fpm_pkgs
にリストされたパッケージがインストールされます。デフォルト: no
.
fastcgi_cache
fastcgiキャッシュを無効にするにはoff
に設定します。デフォルト: z_nginx
.
max_requests
各子プロセスが再生成される前に実行するべきリクエストの数。デフォルト: 1000
.
max_children
生成される子プロセスの最大数。デフォルト: 5
.
memory_limit
スクリプトが割り当てることを許可されるメモリの最大量(バイト単位)。デフォルト: 128M
.
upload_max_filesize
アップロード可能なファイルの最大サイズ。デフォルト: 48M
.
post_max_size
許可されるポストデータの最大サイズを設定します。デフォルト: 64M
.
sftp_enabled
このサーバーのためにsftp
を有効にします。ユーザーを作成し、以下の説明に従って設定を調整します。デフォルト: false
.
sftp
ユーザーを設定し、ファイルをアップロードするためにWebサーバールートへのアクセスを許可するようにSSHDを構成するために使用される設定。
user
sftpユーザーの名前。デフォルト: 'sftp_{{ name | truncate(5, True, "") }}'
.
uuid
sftpユーザーのuuid。デフォルト: 5000
.
home
ユーザーのホームディレクトリ。sshd
はこのディレクトリにルートを変更します。未設定の場合は、Webサーバーのホームに設定します。デフォルト: '/srv/{{ name }}'
.
port
この役割を使用してジャイルにリダイレクトされるべき外部ポート。デフォルト: 10022
.
authorized_keys
ユーザーの認証に使用される公開鍵。デフォルト: '{{ host_sshd_authorized_keys_file }}'
.
依存関係
例プレイブック
他の外部サーバーにトラフィックを転送するプロキシホスト。
- hosts: all
become: true
tasks:
- import_role:
name: 'JoergFiedler.freebsd-jail-host'
- include_role:
name: 'JoergFiedler.freebsd-jailed-nginx'
vars:
nginx_pf_redirect: true
nginx_letsencrypt_enabled: yes
nginx_servers:
- name: 'test.moumantai.de'
https:
enabled: yes
letsencrypt_enabled: yes
proxy:
host: 'www.freebsd.org'
scheme: 'https'
port: 443
local: no
jail_net_ip: '10.1.0.10'
jail_name: 'nginx'
php-fpm
モジュールとHTTPSを備えたnginxサーバー。
- hosts: all
become: true
tasks:
- import_role:
name: 'JoergFiedler.freebsd-jail-host'
- include_role:
name: 'JoergFiedler.freebsd-jailed-nginx'
vars:
jail_net_ip: '10.1.0.10'
jail_name: 'nginx'
nginx_pf_redirect: yes
nginx_servers:
- name: 'default'
https:
enabled: yes
php:
fpm_enabled: yes
sftp_enabled: yes
sftp:
authorized_keys: '~/.vagrant.d/insecure_private_key.pub'
ライセンス
BSD
著者情報
このプロジェクトが気に入ったり、改善のアイデアがあれば、GitHubで問題を報告してください。ありがとうございます。