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.namealiasesプロパティに追加する必要があります。デフォルト: no.

https

SSL/HTTPSに関連する設定。

enabled

サーバーのSSL/HTTPSを有効にするにはyesに設定します。HTTPのみのリクエストはHTTPSにリダイレクトされます。

letsencrypt_enabled

このサーバーに対してhttpsが有効になり、証明書がLet's Encryptおよびacme-clientによって作成されるように指定します。この機能を有効にするには、nginx_letsencrypt_enabledyesに設定する必要があります。デフォルト: 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で問題を報告してください。ありがとうございます。

プロジェクトについて

Provides a jailed nginx server.

インストール
ansible-galaxy install JoergFiedler.freebsd-jailed-nginx
ライセンス
Unknown
ダウンロード
190
所有者