使用Ansible自动配置Nginx服务
1、首先安装好Ansible环境,具体步骤请见Ansible安装
2、先创建hosts文件(为后面编写脚本安装JDK做铺垫)
[root@localhost /]# vi hosts
[jdktest]
192.168.186.133 ansible_ssh_user=guxiong ansible_ssh_pass=private
192.168.186.134 ansible_ssh_user=guxiong ansible_ssh_pass=private
注:记得/etc/ansible/hosts也要加入
3、创建文件夹
[root@localhost /]#
makedir roles
nginx-install
default
files
ngnix-install
nginx-install.tar.gz
handler
meta
tasks main.yml
templates install-nginx.sh nginx.conf
vars main.yml
4、编辑tasks下面的main.yml
- name: create direc
shell: mkdir -p {{ nginx_path }}
- name: copy nginx file to remote client
copy: src=nginx-install.tar.gz dest=/home/{{ user }}
- name: untar nginx
shell: tar -zxf nginx-install.tar.gz
- name: configure install-nginx.sh user template
template: src=install-nginx.sh dest=/home/{{ user }}/nginx-install/install-nginx.sh
- name: cd install direc and excu install
shell: cd /home/{{ user }}/nginx-install && sh install-nginx.sh
- name: configure nginx.conf use template
template: src=nginx.conf dest={{ nginx_path }}/conf/nginx.conf
- name: rm nginxfiles
shell: rm -rf /home/{{ user }}/nginx-install*
5、编辑templates下的 install-nginx.sh
#!/bin/bash mkdir -p {{ nginx_path }}
cd nginx-1.9.3-hide-version
./configure --prefix={{ nginx_path }} --with-http_ssl_module --with-http_gunzip_module --with-http_stub_status_module --with-http_gzip_static_module --with-zlib=../zlib-1.2.8 --with-pcre=../pcre-8.38 --add-module=../nginx_upstream_check_module-master --add-module=../ngx_cache_purge-2.3 && make && make install
sleep 6
exit 0
nginx.conf
#user nobody;
worker_processes 4; error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'"$upstream_cache_status"';
access_log logs/access.log main; sendfile on;
#tcp_nopush on;
server_tokens off;
#keepalive_timeout 0;
keepalive_timeout 65; gzip on; proxy_connect_timeout 60;
proxy_read_timeout 30;
proxy_send_timeout 60;
proxy_buffer_size 4k;
proxy_buffers 32 4k;
proxy_busy_buffers_size 8k;
proxy_temp_file_write_size 512k;
proxy_next_upstream http_500 http_502 http_503 error invalid_header; proxy_temp_path {{ nginx_path }}/proxy_temp;
proxy_cache_path {{ nginx_path }}/proxy_cache
levels=1:2 keys_zone=cache_one:100m inactive=2d max_size=2g; upstream test {
server 192.168.186.133:8080;
server 192.168.186.134:8080;
check interval=3000 rise=2 fall=5 timeout=1000 type=tcp;
ip_hash;
}
server {
listen {{ nginx_port }};
server_name {{ nginx_host }};
check_status;
#charset koi8-r; #access_log logs/host.access.log main; location / {
# root html;
# index index.html index.htm;
proxy_pass http://test/baidu/;
}
location / {
proxy_pass http://test;
} location ~ /purge(/.*) { # allow 192.168.100.112;
# allow 192.168.100.64;
allow all;
# deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
error_page 405 =200 /purge$1;
} location ^~ /jenkins { proxy_pass http://test/jenkins/; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log logs/jenkins_access.log main; } location /status {
check_status;
access_log off;
# allow 192.168.100.64;
allow all;
deny all;
}
#error_page 404 /404.html;
location ~ .*\.(gif|jpg|png|html|css|ico|pdf) {
proxy_pass http://test;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache cache_one;
add_header Nginx-Cache $upstream_cache_status;
proxy_cache_valid 200 304 301 302 8h;
proxy_cache_valid 404 1m;
proxy_cache_valid any 2d;
proxy_cache_key $host$uri$is_args$args;
expires 30d; access_log logs/host.access.log main;
# access_log logs/access.log main;
} # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
} # another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias; # location / {
# root html;
# index index.html index.htm;
# }
#} # HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost; # ssl_certificate cert.pem;
# ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on; # location / {
# root html;
# index index.html index.htm;
# }
#} }
6、将使用到的变量编辑vars下的main.yml
user: guxiong
nginx_host: 192.168.186.134
nginx_port: 3080
nginx_path: /home/guxiong/nginx1.9.0
7、ansible-playbook安装
[root@localhost /]# ansible-playbook nginx-install.yml --extra-var "host_cluster=jdktest user=guxiong nginx_host=192.168.186.134 nginx_port=3080 nginx_path=/home/guxiong/nginx1.9.0"
PLAY [jdktest] **************************************************************** TASK: [nginx-install | create direc] ******************************************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | copy nginx file to remote client] **********************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | untar nginx] *******************************************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | configure install-nginx.sh user template] **************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | cd install direc and excu install] *********************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | configure nginx.conf use template] *********************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | rm nginxfiles] *****************************************
changed: [192.168.186.134]
changed: [192.168.186.133] PLAY RECAP ********************************************************************
192.168.186.133 : ok=7 changed=7 unreachable=0 failed=0
192.168.186.134 : ok=7 changed=7 unreachable=0 failed=0
使用Ansible自动配置Nginx服务的更多相关文章
- Ansible安装配置Nginx
一.思路 现在一台机器上编译安装好nginx.打包,然后在用ansible去下发 cd /etc/ansible 进入ansible配置文件目录 mkdir roles/{common,install ...
- 自动分割nginx服务的日志文件
nginx服务每天都会产生大量的日志信息,时间一长导致日志文件容量很大,会影响系统性能.通过以下shell代码,配合crontab定时执行可实现nginx日志定时分割的功能. #!/bin/bash ...
- 【Nginx】Windows平台下配置Nginx服务实现负载均衡
前言:废话不多说了,直接上步骤. 系统环境:win10 测试用的开发环境和服务类型:VS2022 + DotNet 6 + WebApi 1.本地先创建一个webapi项目,用于测试使用. 2.新建一 ...
- 配置Nginx服务
一,安装之前准备1.nginx依赖: gcc openssl-devel pcre-devel zlib-devel 安装依赖:yum install gcc openssl-devel pcr ...
- Centos 6.5 配置nginx服务
官方网站:http://nginx.org最新版本:1.7.11官方文档:http://nginx.org/en/docs/ 一.安装NGINX查看当前centos版本: #cat /etc/redh ...
- 使用Ansible自动配置JDK环境
1.首先安装好Ansible环境,具体步骤请见Ansible安装 2.先创建hosts文件(为后面编写脚本安装JDK做铺垫) [root@localhost /]# vi hosts [jdktest ...
- 【CNMP系列】CentOS7.0下安装Nginx服务
话步前言,CNMP之路,系统起步:http://www.cnblogs.com/riverdubu/p/6425028.html 这回我来讲解下CentOS7.0下如何安装和配置Nginx服务 Ngi ...
- nodejs配置nginx 以后链接mongodb数据库
服务器 :windows server2008 R2 反向代理 :nginx 1.15.1 for window 64位 数据库:mongodb 4 64位 使用框架express 首先下载nodej ...
- Nginx优化之基本安全优化 (隐藏Nginx软件版本号信息,更改源码隐藏Nginx软件名及版本号,更改Nginx服务的默认用户)
一,隐藏Nginx软件版本号信息 查看版本号 curl -I 192.168.0.220 HTTP/1.1 200 OK Server: nginx/1.6.2 #这里清晰的暴露了Web版本号(1.6 ...
随机推荐
- atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js
atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js 1. 图片按钮的效果总结 1 1.1. 按钮图片自动缩放的. 1 1.2. 不要 ...
- Nginx - rewrite 不区分大小写进行匹配
Nginx - rewrite 不区分大小写进行匹配 分类: Nginx2014-05-28 19:25 1046人阅读 评论(0) 收藏 举报 Use (?i) to match case-inse ...
- 华中农业大学校赛 I Catching Dogs
Catching Dogs Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1140 Solved: 298[Submit][Status][Web B ...
- Java compiler level does not match the version of the installed Java project facet 的解决方案
今天将MyEclipse升级到 9.1 后,打开原来的工作空间,原来所有的项目都前面都显示了一个小叉叉,代码中却没有任何错误.于从 problems 视图中查看错误信息,错误信息的"D ...
- HTTP Header Accept-Language的ctf
题目也不知道该怎么取,但是是实在的一个案例.分享给大家. 种族歧视分值: 300 小明同学今天访问了一个网站,竟然不允许中国人访问!太坑了,于是小明同学决心一定要进去一探究竟! 发现accept-L ...
- scala 测试类
class NetworkUtilTest extends FunSuite with Matchers { test("testIp2Int") { val ip = Netwo ...
- JavaScript 框架 jQuery 的下载和安装
jQuery 简介: jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. jQuery 很容易学习. jQuery 下载: // 官网: htt ...
- python解析文本文件演示样例
目的:查找文本中还有Sum/Avg的行中低三个竖线后第一个浮点数 思路:先使用python读取文本中一行,然后切割字符串.查找含有Sum/Avgkeyword的行.取出想要的结果 文本局部: .... ...
- Cookie js 操作
从事web开发也有些日子了,cookie 是个啥差不多能说明白,可是实际自己一上手操作就是得去搜索(你们懂的),结果被鄙视了...所以就写一篇博文做为自己的学习笔记,嘿嘿,博客的好处在此体现出来了. ...
- js函数与 Promise的使用
JavaScript的函数不但是“头等公民”,而且可以像变量一样使用,具有非常强大的抽象能力. 定义函数的方式如下: function abs(x) { if (x >= 0) { return ...