Nginx的反向代理负载均衡以及日志切割

Nginx的反向代理负载均衡以及日志切割

Nginx是一个高并发,高性能的服务器,可以进行反向代理以及网站的负载均衡。这些功能的运用都在配置文件中,也就是Nginx安装目录下的conf/nginx.conf。

nginx.conf

1. 先来看下Nginx默认的配置文件以及说明:

#user nobody;

#----------------------------------------------

# user用来配置使用的用户和组,默认是没有进行配置的:

# 如下配置表示配置aries这个用户以及aries这个用户组:

# user aries aries

#----------------------------------------------

worker_processes 1;

#----------------------------------------------

# worker_processes 用来配置Nginx开启的进程数,

# 一般配置等于cpu的核数。

#----------------------------------------------

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#---------------------------------------------

# error_log 全局错误日志配置,后面跟生成的

# 志文件的位置,默认在Nginx的logs

# 文件夹中,以及日志级别。

# [ debug | info | notice | warn | error | crit ]

#---------------------------------------------

#pid logs/nginx.pid;#---------------------------------------------

# pid 当Nginx启动时会生成一个nginx.pid的文件,

# 里面存放的是Nginx主线程的id号。

#---------------------------------------------

#工作模式与连接数上限

events {

use epoll;

worker_connections 1024; #配置Nginx单个进程允许的最大连接数。

}#设定http服务器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"';

#access_log logs/access.log main; #-----------------------------------------------------------------------

# log_format 配置日志格式,后面跟日志格式的名称和配置的格式,参数是Nginx中

# 一些内置的属性。

# access_log 配置日志的存放位置,以及后面跟日志打印格式内容。

# ----------------------------------------------------------------------

sendfile on; # 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件 #tcp_nopush on; # 防止网络阻塞

#keepalive_timeout 0;

keepalive_timeout 65;

#gzip on;

# 配置开启gzip压缩

#虚拟主机的配置

server { listen 80;

# 监听端口

server_name localhost; # 监听主机名称或者ip

#charset koi8-r; # 默认编码

location / {

root html; index index.html index.htm;

}

#-------------------------------------------------

# 配置的访问位置,默认是html目录下的index.html文件,

# 如果不存在则找index.htm文件

#------------------------------------------------- #error_page 404 /404.html;

#错误页面配置

# redirect server error pages to the static page /50x.html

#

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}}

“http”表示配置的http协议的请求,里面可以配置多台server(虚拟主机),基本的配置格式如下:

......event{ ......

}

http{ .....

server { ......      }

server { ......      }

}

2. 下面配置负载均衡:

#user nobody;worker_processes 1;

events { use epoll;

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

keepalive_timeout 65;

log_format mystyle '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

upstream mycomputers { #upstream的负载均衡,weight是权重,可以根据机器配置定义权重;weigth参数表示权值,权值越大被分配到的几率越大;down表示当前主机不可用。

server 192.168.137.111:80 weight=2;

server 192.168.137.114:80 weight=2 ;

server 192.168.137.113:80 weight=2 down;

}

server { listen 80;

server_name localhost;

location / {

proxy_pass http://mycomputers; # 将请求按照权重分配给上面配置的服务器

proxy_set_header X-UserRealIP-For $remote_addr; # 因为用户请求服务,先到Nginx所以在服务端如果在服务端直接过去请求IP得到的是Nginx的主机,所以在这里去出用户的真实IP,设置在请求头中,服务端才可以获取用户的真实IP。 }

access_log logs/access.log mystyle;

}

}

3. 反向代理配置

server {

listen 80;

server_name localhost;

location / {

proxy_pass http://192.168.137.114:8080; #代理的内部IP服务器

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

}

access_log logs/access.log mystyle;

}

4. 动静分离配置

server{ listen 80;

server_name localhost;

#本地动静分离反向代理配置

#所有jsp的页面均交由tomcat或其他服务器处理

location ~ \.(jsp|jspx|do)?$ {

proxy_pass http://127.0.0.1:8080;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

#所有静态文件由nginx直接读取不经过tomcat或resin

location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${

expires 15d;

}

location ~ .*\.(js|css)?${

expires 1h;

}

}

5. Nginx日志的切割

a 写如下脚本存放到 /usr/local/nginx/sbin目录下命名nginx_cut_log.sh, 作用是暂停nginx服务并备份日志文件,然后重启。

#!/bin/bash

BASE_PATH=/usr/local/nginx

LOGS_PATH=$/logs

LOGS_PATH_BAK=$/logs_bak

BAK_TIME=`/bin/date -d yesterday +%Y%m%d`

$BASE_PATH/sbin/nginx -s stopmv $LOGS_PATH/access.log $LOGS_PATH_BAK/access_$BAK_TIME.log

$BASE_PATH/sbin/nginx

给所有用户添加执行权限: chmod a+x nginx_cut_log.sh

b 输入: crontab -e

插入如下代码: 00 00 * * * sh /usr/local/nginx/nginx_cut_log.sh

此操作是让linux系统每天晚上12点整执行nginx_cut_log.sh脚本进行日志切割备份。

测试配置: */1 * * * * sh /usr/local/nginx/sbin/nginx_cut_log.sh 每分钟执行一次

BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`

效果如下:

请点击此处输入图片描述

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180122A0F2AW00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区