NGINX负载均衡,动静分离,反向代理,日志切割

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。

你可能感兴趣的:(NGINX负载均衡,动静分离,反向代理,日志切割)