Nginx虚拟主机配置与日志管理

Nginx虚拟主机配置与日志管理

  1. 虚拟主机配置
    1. 配置文件解读,分析nginx.conf配置文件
#开启进程数 <=CPU数   设置超过CPU数无效
worker_processes  1;

#错误日志保存位置
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#进程号保存文件
#pid        logs/nginx.pid;

#每个进程最大连接数(最大连接=连接数x进程数)每个worker允许同时产生多少个链接,默认1024
events {
    worker_connections  1024; 
    use epoll;
}

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;
    #错误指令
    fastcgi_intercept_errors on;   
    #设置格式
    charset  utf-8;   
    #hash表存储的大小
    server_names_hash_bucket_size 128;   
    #设定请求缓冲
    client_header_buffer_size 4k;   
    large_client_header_buffers 4 32k;   
    #文件上传大小
    client_max_body_size 300m;   
    
    sendfile on;   
    tcp_nopush     on;   
      
    keepalive_timeout 60;   
      
    tcp_nodelay on;   
    client_body_buffer_size  512k;   
    
    proxy_connect_timeout    5;   
    proxy_read_timeout       60;   
    proxy_send_timeout       5;   
    proxy_buffer_size        16k;   
    proxy_buffers            4 64k;   
    proxy_busy_buffers_size 128k;   
    proxy_temp_file_write_size 128k;   
      
    gzip on;   
    gzip_min_length  1k;   
    gzip_buffers     4 16k;   
    gzip_http_version 1.1;   
    gzip_comp_level 2;   
    gzip_types       text/plain application/x-javascript text/css application/xml;   
    gzip_vary on;
	
    #设定负载均衡的服务器列表
    upstream web_app { 
    	#weigth参数表示权值,权值越高被分配到的几率越大
		#max_fails 当有#max_fails个请求失败,就表示后端的服务器不可用,默认为1,将其设置为0可以关闭检查
		#fail_timeout 在以后的#fail_timeout时间内nginx不会再把请求发往已检查出标记为不可用的服务器  
  	 	server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;   
	 	server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;   
    }  
    
    #配置虚拟主机,基于域名、ip和端口
    server {
   	 	#监听端口
        listen       80;
        #监听域名
        server_name  localhost:80;

		#charset koi8-r;
		
		#nginx访问日志放在logs/host.access.log下,并且使用main格式(还可以自定义格式)
        #access_log  logs/host.access.log  main;

		#返回的相应文件地址
        location {
        	#设置客户端真实ip地址
            proxy_set_header X-real-ip $remote_addr;
            #负载均衡反向代理
			proxy_pass http://web_app;
        }

		#错误页面及其返回地址
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

#server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}
  1. 配置实例截图
server {
   	 	#监听端口
        listen       80;
        #监听域名
        server_name  localhost:80;

		#返回的相应文件地址
        location {
        	root 路径;
        	index 返回页面;
        }
        }
        #只要写了这些配置,一个简单的虚拟主机就配置好了
        #配置思路
        #1. 修改配置文件
        #2. 读取配置文件(kill -HUP `cat logs/nginx.pid`  或者  nginx路径/sbin/nginx -s reload)
        #3. 如果是域名需要修改host,在host添加上自己写的域名,使其不在互联网上解析 (host路径 `C:\Windows\System32\drivers\etc`)

Nginx虚拟主机配置与日志管理_第1张图片
重新读取配置文件
Nginx虚拟主机配置与日志管理_第2张图片
Nginx虚拟主机配置与日志管理_第3张图片
Nginx虚拟主机配置与日志管理_第4张图片
2. 日志管理

  1. 常规管理
```
#access_log  logs/host.access.log  main;

#access_log 访问成功的日志
#logs/host.access.log 存储的路径
#main 使用“main”格式

# 分析main格式里面的内容
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

#$remote_addr	远程地址
#$remote_user	访问用户
#$time_local	访问时间
#$request	请求方式(GET/POST/PUT/DELETE)
#$status	请求状态
#$body_bytes_sent		发送的字节
#$http_referer		前置页面
#$http_user_agent		用户代理
#$http_x_forwarded_for		http来源

#配置的时候一定要先把配置文件中的main格式先打开
```
![配置访问日志](https://img-blog.csdnimg.cn/20190515121209146.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9xaV8w,size_16,color_FFFFFF,t_70)
  1. 日志切割
日志分割步骤:
   1. 将原有的日志重命名
   2. 创建一个与原有日志一样的名称
   3. 重新读取配置文件
日志定时分割步骤
	1. 编写shell脚本(脚本中实现日志分割的步骤)
	2. 执行shell脚本

日志分割的shell脚本
#日志的路径
LOGPATH =/usr/local/nginx/logs/z.com.log
#备份日志路径
BASEPATH=/data
#备份日志名称  (+%Y%m%d%H%M   相当于是yyyyMMddHHmm  年月日时分)
bask=$BASEPATH/$(data -d yesterday +%Y%m%d%H%M).zcom.access.log

#将/usr/local/nginx/logs/z.com.log的日志转移到$bask下
mv $LOGPATH  $bask
#修改文件
touch $LOGPATH
#重新读取配置文件
kill -USR1 	`cat  /usr/local/nginx/logs/nginx.pid`

日志根据日期存储到不同文件夹shell脚本
#日志的路径
LOGPATH =/usr/local/nginx/logs/z.com.log
#备份日志路径
BASEPATH=/data/$(data -d yesterday +%Y%m%d)

#创建目录(多了创建目录)
mkdir -p $BASEPATH

#备份日志名称  (+%Y%m%d%H%M   相当于是yyyyMMddHHmm  年月日时分)
bask=$BASEPATH/$(data -d yesterday +%H%M).zcom.access.log

#将/usr/local/nginx/logs/z.com.log的日志转移到$bask下
mv $LOGPATH  $bask
#修改文件
touch $LOGPATH
#重新读取配置文件
kill -USR1 	`cat  /usr/local/nginx/logs/nginx.pid`

设置定时器(crontab -e)
*/1 * * * * sh /data/runlog.sh  (分  时  日  月  周  命令)

Nginx虚拟主机配置与日志管理_第5张图片
定时执行shell脚本
Nginx虚拟主机配置与日志管理_第6张图片

你可能感兴趣的:(Nginx学习)