zoukankan      html  css  js  c++  java
  • nginx的一些介绍和使用

    nginx 的安装

    我们首先进行下载安装:http://nginx.org/download/nginx-1.4.2.tar.gz

    安装准备: nginx依赖于pcre库,要先安装pcre

    1 yum install pcre pcre-devel
    2 cd /usr/local/src/
    3 wget http://nginx.org/download/nginx-1.4.2.tar.gz
    4 tar zxvf nginx-1.4.2.tar.gz 
    5 cd nginx-1.4.2
    6 ./configure --prefix=/usr/local/nginx
    7 make && make install

    nginx的启动:

    cd /ulsr/local/nginx, 看到如下4个目录

    1 ....conf 配置文件  
    2  ... html 网页文件
    3  ...logs  日志文件 
    4  ...sbin  主要二进制程序

    Nginx的信号控制启动:

    TERM, INT

    Quick shutdown

    QUIT

    Graceful shutdown  优雅的关闭进程,即等请求结束后再关闭

    HUP

    Configuration reload ,Start the new worker processes with

     a new configuration Gracefully shutdown the old worker processes

    改变配置文件,平滑的重读配置文件

    USR1

    Reopen the log files 重读日志,在日志按月/日分割时有用

    USR2

    Upgrade Executable on the fly 平滑的升级

    WINCH

    Gracefully shutdown the worker processes 优雅关闭旧的进程(配合USR2来进行升级)

    具体用法: 

    1 Kill -信号选项 nginx的主进程号
    2 Kill -HUP 4873
    3 
    4 Kill -信号控制 `cat /xxx/path/log/nginx.pid`
    5 
    6 Kil; -USR1 `cat /xxx/path/log/nginx.pid`

    Nginx的一些基本配置段:

     1 // 全局区
     2 worker_processes 1; // 有1个工作的子进程,可以自行修改,但太大无益,因为要争夺CPU,一般设置为 CPU数*核数   工作中的是4*4
     3 
     4 Event {
     5     // 一般是配置nginx连接的特性
     6     // 如1个work能同时允许多少连接
     7     worker_connections  1024; // 这是指 一个子进程最大允许连1024个连接
     8 }
     9 
    10 http {  //这是配置http服务器的主要段
    11      Server1 { // 这是虚拟主机段
    12        
    13             Location {  //定位,把特殊的路径或文件再次定位 ,如image目录单独处理
    14             }             /// 如.php单独处理
    15 
    16      }
    17 
    18      Server2 {
    19      }
    20 }

    使用的具体例子1:

     1     基于域名的虚拟主机
     2 
     3     server {
     4         listen 80;  #监听端口
     5         server_name a.com; #监听域名
     6 
     7         location / {
     8                 root /var/www/a.com;   #根目录定位
     9                 index index.html;
    10         }
    11     }

    使用的具体例子2:

     1     基于端口的虚拟主机配置
     2 
     3     server {
     4         listen 8080;
     5         server_name 192.168.1.204;
     6 
     7         location / {
     8                 root /var/www/html8080;
     9                 index index.html;
    10         }
    11     }

    日志管理:

     1 我们观察nginx的server段,可以看到如下类似信息
     2  #access_log  logs/host.access.log  main;
     3 这说明 该server, 它的访问日志的文件是  logs/host.access.log ,
     4 使用的格式是”main”格式.
     5 当然了除了main格式,你可以自定义其他格式.
     6 
     7 main格式是什么?
     8 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
     9                  '$status $body_bytes_sent "$http_referer" '
    10                  '"$http_user_agent" "$http_x_forwarded_for"';
    11 
    12 main格式是我们定义好一种日志的格式,并起个名字,便于引用.
    13 以上面的例子, main类型的日志,记录的 remote_addr.... http_x_forwarded_for等选项.

    1: 日志格式 是指记录哪些选项

     1 默认的日志格式: main
     2      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
     3                             '$status $body_bytes_sent "$http_referer" '
     4                             '"$http_user_agent" "$http_x_forwarded_for"';
     5 
     6 如默认的main日志格式,记录这么几项
     7 远程IP- 远程用户/用户时间 请求方法(如GET/POST) 请求体body长度 referer来源信息
     8 http-user-agent用户代理/蜘蛛 ,被转发的请求的原始IP
     9 
    10 http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP

    2: 声明一个独特的log_format并命名

    1  log_format  mylog '$remote_addr- "$request" '
    2                      '$status $body_bytes_sent "$http_referer" '
    3                         '"$http_user_agent" "$http_x_forwarded_for"';
    1 在server段中,这样来声明
    2 Nginx允许针对不同的server做不同的Log ,(有的web服务器不支持,如lighttp)
    3 
    4 access_log  logs/access_8080.log   mylog;   
    5 声明log    og位置              log格式;

    一个日志的应用:shell+定时任务+nginx信号管理,完成日志按日期存储

    1 #!/bin/bash
    2 base_path='/usr/local/nginx/logs'
    3 log_path=$(date -d yesterday +"%Y%m")
    4 day=$(date -d yesterday +"%d")
    5 mkdir -p $base_path/$log_path
    6 mv $base_path/access.log $base_path/$log_path/access_$day.log
    7 #echo $base_path/$log_path/access_$day.log
    8 kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

    然后可以做一个crontab的定时任务即可。

  • 相关阅读:
    深入剖析ASP.NET的编译原理之二:预编译(Precompilation)
    六个建议防止SQL注入式攻击
    微软IIS的ISAPI筛选器权限法则
    IIS属性没有ASP.NET选项
    让我们的服务器更安全Win03 防木马权限设置,IIS服务器安全配置
    IIS自动停止,iis自动关闭。应用程序池假死、自动重启以及iis权限等解决办法
    深入剖析ASP.NET的编译原理之一:动态编译(Dynamical Compilation)
    c#操作xml
    C# 容易出现insert into语句的语法错误的原因
    兼容ie/火狐的全能日历代码含农历
  • 原文地址:https://www.cnblogs.com/shangzekai/p/4684016.html
Copyright © 2011-2022 走看看