NGINX负载均衡配置:
1.在/usr/local/nginx/conf下新建一个conf配置文件(名字随便取),这里以fzjh.conf为例,当然你也可以备份nginx.conf之后,直接对nginx.conf进行编辑.
user nobody;
worker_processes 4;
events {
worker_connections 10240;
}
http {
upstream demo{
#配置ip_hash,添加该配置后,系统会自动记录用户第一次访问后被分配的服务器,然后在接下来的所有访问中,该用户都只能被分配到第一次访问时访问的服务器,对所有用户都是如此,当然这样并不影响负载均衡,依然可以负载均衡,只是牺牲了一定的负载均衡效果.
#ip_hash;
server 115.239.211.112; #这里为集群的服务器Ip,集群服务器中的内容应该保持一致,这里为了演示,选了不同内容的服务器,以便看的出来.
server 140.205.135.3 weight=2;//可以设置权值,权值越大,分配到的几率越大,权值不设置的话默认为1.
}
server{
listen 8089;#监听的端口,可以自己指定
server_name www.laohan1.com;#这里的虚拟主机指向的域名,可以在windows中配置hosts实现.
location /{
proxy_pass http://demo;#指定反向代理到哪个服务器组,一定要与前面upstream的name保持一致.
}
}
}
以上便是负载均衡和反向代理的配置,动静分离只需要在Location中添加配置过滤,这里引用阿里云官方的配置方法,非常直观,备用.
案例:分离动态页面和静态页面
主机s100上配置一个Nginx
upstream statics{
server s101:80 weight=1; #访问配置了静态页面的nginx
server s102:80 weight=1; #访问配置了静态页面的nginx
server s103:80 weight=1; #访问配置了静态页面的nginx
}
upstream tomcats{
server s101:8080 weight=1;#访问tomcat
server s102:8080 weight=1;#访问tomcat
server s103:8080 weight=1;#访问tomcat
}
server{
listen 80;
server_name s100;
access_log off;
location ~* /.(png|html|js|css)$ {
proxy_pass http://statics;
#所有以.png .html .js .css结尾的url进入此路径
}
location / {
proxy_pass http://tomcats;
#其它url进入此路径
}
}
主机s100,s101, s102上分别配置nginx 和 tomcat(略)
server{
listen 80;
server_name s101;
location / {
root html; #存放了静态页面的根目录
index index.html index.htm; #主页
}
}
详情可以参考阿里云:https://www.aliyun.com/jiaocheng/125695.html?spm=5176.100033.1.13.hNcx0X
日志切割:
1.手动切割: 先将原来的日志文件备份 mv access.log 20180612.log,备份为当前的日期即可. 然后使用kill -USR1 +PID 重新开启新的日志
2.自动切割:
2.1在logs文件夹下通过touch cutlog.sh新建cutlog.sh文件,并编辑:vi cutlog.sh,编辑里面内容如下:
D=$(date +%Y%m%d) #获取当前日期
mv /usr/local/nginx/logs/access.log ${D}.log #将原来的日志文件备份,重命名为今天的日期
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) #重新开启记新的日志
2.2通过crontab(类似于java中的定时器)来定时执行cutlog.sh文件:
crontab -e(新建一个定时执行的任务)
59 23 * * * /bin/bash /usr/local/nginx/logs/cutlog.sh(代表在每天的23:59执行该任务)
创建好了可以通过crontab -l来查看是否创建成功.
附crontba时间的格式:
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。