JoergFiedler.freebsd-jailed-nginx

freebsd-jailed-nginx

这个角色提供了一个监听 localhost:{80,443} 的监狱式 nginx 服务器,用于处理传入请求。

该角色还提供了一个有效的 SSL 配置,利用 Let's Encrypt 提供的功能。

您需要提供一个自定义的 dhparam.pem 文件。请在与您的剧本相邻的 files 文件夹内创建一个以您的服务器名称(example.com)命名的文件夹。

证书将通过定期的 weekly 进行验证/生成。为了立即让服务器运行,安装了一个自签名的本地主机证书。您可以在监狱启动后手动生成您的 Let's Encrypt 证书,使用以下命令:

 /usr/local/bin/acme-client-weekly.sh

该角色还可以用于支持 WordPress 或 Joomla 安装。为了访问 webroot 目录,还配置了一个 SFTP 服务器,通过公钥认证来保证安全。

此角色也可用于创建 SSL 终止代理,将流量转发到特定域的监狱或外部站点。

要求

此角色旨在用于全新的 FreeBSD 安装。您可以使用提供 VirtualBox 和 EC2 的 Vagrant Box。

角色变量

nginx_letsencrypt_enabled

设置为 yes 时启用自动证书管理,与 Lets Encrypt 一起为所有 nginx 服务器启用此功能。如果启用,它将安装 acme-client 工具并为服务器准备一些配置。默认值:no

nginx_letsencrypt_acme_private_key

使用此变量指定将用于与 LetsEncrypt 通信的私钥。默认值:'''

nginx_letsencrypt_api_host

要联系的服务器的主机名。默认值:acme-v02.api.letsencrypt.org

nginx_tarsnap_enabled

是否应使用 tarsnap 备份所有 nginx 服务器的 webroot。必须在主机本身启用(tarsnap_enabled: yes)。默认值:{{ tarsnap_enabled | default("no") }}

nginx_syslogd_server

nginx 应该使用的 syslogd 服务器,以写入错误和访问日志。默认值:{{ syslogd_server | default("localhost") }}

nginx_pf_redirect

如果设置为 yes,则将流量转发到 http(s) 端口到该监狱的 nginx 服务器。默认值: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 创建 Nginx 默认服务器。默认值:''

basic_auth_enabled

设置为 true 以启用此服务器的基本身份验证。您需要提供 htpasswd 文件并将其保存在文件 {{ server_name }}/htpasswd 下。

force_www

如果服务器应该重定向到 www 域名。如果设置为 yes,所有对 name 的请求都会重定向到 www 子域。您还需要将 www.name 添加到 aliases 属性中。默认值:no

https

与 SSL/HTTPS 相关的设置。

enabled

设置为 yes 启用此服务器的 SSL/HTTPS。仅 HTTP 请求将被重定向到 HTTPS。

letsencrypt_enabled

如果设置为启用,此服务器的 HTTPS,将由 Lets Encrypt 和 acme-client 创建证书。您还需要将 nginx_letsencrypt_enabled 设置为 yes 以启用此功能。默认值:no

name

此服务器的域名,例如 example.com。默认值:default

php

与 PHP 相关的设置。

fpm_enabled

设置为 true 以安装和启用 php-fpm 包。如果启用,则将安装在 nginx_php_fpm_pkgs 中列出的以下软件包。默认值:no

fastcgi_cache

设置为 off 以禁用 fastcgi 缓存。默认值:z_nginx

max_requests

每个子进程在重新生成之前应执行的请求数。默认值:1000

max_children

可以创建的最大子进程数。默认值:5

memory_limit

设置脚本可以分配的最大内存字节数。默认值:128M

upload_max_filesize

上传文件的最大大小。默认值:48M

post_max_size

设置允许的贴子数据的最大大小。默认值:64M

sftp_enabled

为此服务器启用 sftp。创建一个用户并根据以下说明调整设置。默认值:false

sftp

用于设置用户和配置 SSHD 以允许访问 web 服务器根目录以上传文件的设置。

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 上提出问题。谢谢。

安装
ansible-galaxy install JoergFiedler.freebsd-jailed-nginx
许可证
Unknown
下载
190
拥有者