lesfurets.nginx
Nginx
Ansible角色,用于从系统包安装Nginx
依赖
该角色依赖lesfurets.epel,适用于RedHat/CentOS。
角色变量
变量可用于配置Nginx以及定义各种虚拟主机和上游服务器。 您还可以提供一个Nginx用户列表,这将把这些用户加入Nginx组。
Nginx配置变量
配置路径变量:
- nginx_conf_path:设置配置路径。默认是
/etc/nginx/conf.d
。 - nginx_conf_file_path:设置主配置文件路径。默认是
/etc/nginx/nginx.conf
。 - nginx_mime_file_path:设置mime文件的路径。默认是
/etc/nginx/mime.types
。
日志配置变量:
- nginx_error_log:设置错误日志文件的路径和选项。默认是
/var/log/nginx/error.log warn
。 - nginx_access_log:设置访问日志文件的路径和选项。默认是
/var/log/nginx/access.log main buffer=16k flush=2m
。
工作进程配置变量:
- nginx_worker_processes:设置工作进程的配置。默认依赖于
ansible_processor_vcpus
或ansible_processor_count
。 - nginx_worker_connections:设置每个工作进程的最大连接数。默认是
1024
。 - nginx_multi_accept:设置Nginx的multi_accept参数。默认是
off
。
TCP连接选项变量:
- nginx_sendfile:设置sendfile参数。默认是
on
。 - nginx_tcp_nopush:设置tcp_nopush参数。默认是
on
。 - nginx_tcp_nodelay:设置tcp_nodelay参数。默认是
on
。
Nginx keepalive设置:
- nginx_keepalive_timeout:设置keepalive_timeout参数(以秒为单位)。默认是
65
。 - nginx_keepalive_requests:设置keepalive_requests参数。默认是
100
。
Nginx行为设置:
nginx_server_tokens:设置server_tokens参数(是否在响应头中显示Nginx版本)。默认是
on
。nginx_client_max_body_size:设置client_max_body_size参数(最大文件上传大小)。默认是
64m
。nginx_server_names_hash_bucket_size:设置server_names_hash_bucket_size参数。默认值是
64
。nginx_proxy_cache_path:设置proxy_cache_path参数:路径和设置(例如
/var/cache/nginx keys_zone=cache:32m
)。默认未配置。nginx_extra_conf_options:是一组可选的参数(普通Nginx配置),可插入到主配置文件的顶部。默认为空。
nginx_extra_http_options:是一组可选的参数(普通Nginx配置),可插入到主配置文件的顶级http块中。默认为空。
nginx_capable_users:是一个用户列表,将被添加到Nginx组。这在例如设置一个Web服务时非常有用,如果您想要在该用户拥有的套接字上进行proxy_pass。
虚拟主机变量
- nginx_remove_default_vhost:可以设置为true以移除默认Nginx虚拟主机。默认值为false。
nginx_vhosts:是设定Nginx虚拟主机的一组变量:
vhost服务器块变量:
- listen:设置监听的端口号。默认是
80
。 - server_name:设置虚拟主机的服务器名称。用作虚拟主机文件名的回退。
- root:可选,设置Web服务器的根目录。默认未设置。
- index:可选,设置索引参数(例如
index.html index.htm
)。 - filename:可选,设置虚拟主机文件名。
- error_page:可选,设置错误页面参数。
- access_log:可选,设置访问日志参数。
- error_log:可选,设置错误日志参数。
- extra_parameters:可选,可以用于在虚拟主机服务器块中添加普通Nginx配置。
- listen:设置监听的端口号。默认是
SSL相关变量:
- use_ssl:可选,设置为true时,在虚拟主机服务器块中添加
ssl on;
指令。 - redirect_http_https:可选,设置为true时,添加一个在80端口监听并重定向到
https://$host$request_uri;
的服务器块。 - ssl_params:可选,要添加的SSL参数列表:[] # 默认的SSL参数:
ssl_certificate: '/etc/nginx/cert.crt' ssl_certificate_key: '/etc/nginx/cert.key' ssl_session_cache: 'builtin:1000 shared:SSL:10m' ssl_protocols: 'TLSv1 TLSv1.1 TLSv1.2' ssl_ciphers: 'HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4' ssl_prefer_server_ciphers 'on'
- locations
- vhost位置块变量:
- location:设置资源位置(例如
/
或/static
)。也接受一组键/值参数以配置定义资源的位置块。
- state:用于决定虚拟主机是否应存在。默认设置为
present
。
- use_ssl:可选,设置为true时,在虚拟主机服务器块中添加
下面的部分提供了一些设置示例。
示例剧本
Web服务器示例
- hosts: webservers
vars:
- nginx_vhosts:
- server_name: "mywebsite.com"
listen: "80"
root: "/srv/www/mywebsite"
index index.html;
locations:
- location: "/"
try_files: "$uri $uri/ =404"
roles:
- lesfurets.nginx
反向代理与HTTPS示例
- hosts: reverse_proxy
vars:
- nginx_vhosts:
- listen: "443"
use_ssl: true
redirect_http_https: true
ssl_params:
- ssl_certificate: "/srv/ssl/cert.pem"
- ssl_certificate_key: "/srv/ssl/cert.key"
locations:
- location: "/"
proxy_pass: "http://127.0.0.1:8080"
proxy_set_header:
- "Host $host"
- "X-Real-IP $remote_addr"
- "X-Forwarded-For $proxy_add_x_forwarded_for"
- "X-Forwarded-Proto $scheme"
roles:
- lesfurets.nginx
许可证
根据GPLv3许可证授权。请查看许可证文件以获取详细信息。
ansible-galaxy install lesfurets.nginx