一:这节主要讲解gzip配置,status配置,虚拟主机配置

gzip配置

  1. gzip on;  启用或禁用压缩响应
  2.  
  3. gzip_min_length 1K; 设置gzip响应的最小长度,这个长度取决于Content-length字段
  4.  
  5. gzip_buffers 4 16k; 设置多少4个大小为16K的buffer用于压缩响应,默认为内存页的大小4K或者是8K取决于平台
  6.  
  7. gzip_http_version 1.1; 压缩响应的http版本
  8.  
  9. gzip_comp_level 2; 压缩的级别
  10.  
  11. gzip_types text/css text/plain application/x-javascript application/xml; 压缩的类型
  12.  
  13. gzip_vary; 启用应答头“Vary: Accept-Encoding”

status配置

  1. location /nginx {  #定义通过访问http://localhost/nginx进入status界面
  2.     stub_status on;  #开启stub_status功能
  3.     access_log off;
  4.     auth_basic "administrator login";  #定义弹出的登陆框的提示信息
  5.     auth_basic_user_file /usr/local/nginx/htpasswd; #定义登陆的账号和密码信息
  6.   }
  7. 密码文件的创建需要借助apache自带的工具htpasswd来创建 没有htpasswd可以yum安装apache
  8. htpasswd -c /usr/local/nginx/htpasswd admin 回车后会要求输入密码
  9. 到此配置完成

虚拟主机配置

  1. 虚拟主机的配置主要有基于域名的 基于端口的 基于IP的 这里我介绍下基于域名和和基于IP的
  2. 基于IP的用的不多 毕竟IP资源比较匮乏主要是利用ifconfig的别名技术在eth0网卡上再加上一个IP
  3. ifconfig eth0:0 10.17.0.222 netmask 255.255.255.0
  4. 然后通过listen让其监听再IP:80的套接字上,而不是直接listen 80让其监听再*:80上 目的是让nginx识别出是请求哪个server主机的
  5.     server {
  6.         listen       10.17.0.222:80;
  7.         server_name  10.17.0.222;
  8.  
  9.         location / {
  10.             root   /var/www/html;
  11.             index  index.html index.htm;
  12.         }
  13.     }
  14. server {
  15.         listen       10.17.0.27:80;
  16.         server_name  10.17.0.27;
  17.  
  18.         location / {
  19.             root   /var/www/html;
  20.             index  index.html index.htm;
  21.         }
  22.     }
  23. 基于域名的比较简单修改server_name不同即可,因为我们无法搞到域名,我们可以再客户机上通过c:/windows/system32/drivers/etc/host文件加入
  24. 10.17.0.222 www.test1.com让其通过hosts文件来解析
  25.     server {
  26.         listen       80;
  27.         server_name  www.test1.com;
  28.  
  29.         location / {
  30.             root   /var/www/html;
  31.             index  index.html index.htm;
  32.         }
  33.     }
  34. server {
  35.         listen       80;
  36.         server_name  www.test2.com;
  37.  
  38.         location / {
  39.             root   /var/www/html;
  40.             index  index.html index.htm;
  41.         }
  42.     }
  43. 当虚拟主机非常多的时候我们可以用innclude来包含一个文件或者一个目录下的所有文件 这样让nginx的配置文件更容易查看

二:nginx的启动脚本和日志

通过下面脚本将nginx做成服务形式

  1. #!/bin/sh 
  2. # nginx - this script starts and stops the nginx daemon 
  3. # chkconfig: - 85 15 
  4. # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ 
  5. #   proxy and IMAP/POP3 proxy server 
  6. # processname: nginx 
  7. # config: /etc/nginx/nginx.conf 
  8. # config: /etc/sysconfig/nginx 
  9. # pidfile: /var/run/nginx.pid 
  10. # Source function library. 
  11. . /etc/rc.d/init.d/functions 
  12. # Source networking configuration. 
  13. . /etc/sysconfig/network 
  14. # Check that networking is up. 
  15. [ "$NETWORKING" = "no" ] && exit 0 
  16.     nginx="/usr/local/nginx/sbin/nginx" 
  17.     prog=$(basename $nginx) 
  18.     NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" 
  19. [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx 
  20.     lockfile=/var/lock/subsys/nginx 
  21.  
  22. start() { 
  23.     [ -x $nginx ] || exit 5 
  24.     [ -f $NGINX_CONF_FILE ] || exit 6 
  25.     echo -n $"Starting $prog: " 
  26.     daemon $nginx -c $NGINX_CONF_FILE 
  27.     retval=$? 
  28.     echo 
  29. [ $retval -eq 0 ] && touch $lockfile 
  30.     return $retval 
  31.  
  32. stop() { 
  33.     echo -n $"Stopping $prog: " 
  34.     killproc $prog -QUIT 
  35.     retval=$? 
  36.     echo 
  37. [ $retval -eq 0 ] && rm -f $lockfile 
  38.     return $retval 
  39.     killall -9 nginx 
  40.  
  41. restart() { 
  42.     configtest || return $? 
  43.     stop 
  44.     sleep 1 
  45.     start 
  46.  
  47. reload() { 
  48.     configtest || return $? 
  49.     echo -n $"Reloading $prog: " 
  50.     killproc $nginx -HUP 
  51.     RETVAL=$? 
  52.     echo 
  53.  
  54. force_reload() { 
  55.     restart 
  56.  
  57. configtest() { 
  58.     $nginx -t -c $NGINX_CONF_FILE 
  59.  
  60. rh_status() { 
  61.     status $prog 
  62.  
  63. rh_status_q() { 
  64.     rh_status >/dev/null 2>&1 
  65.  
  66. case "$1" in 
  67.     start) 
  68.         rh_status_q && exit 0 
  69.         $1 
  70.     ;; 
  71.     stop) 
  72.         rh_status_q || exit 0 
  73.         $1 
  74.     ;; 
  75.     restart|configtest) 
  76.         $1 
  77.     ;; 
  78.     reload) 
  79.         rh_status_q || exit 7 
  80.         $1 
  81.     ;; 
  82.     force-reload) 
  83.         force_reload 
  84.     ;; 
  85.     status) 
  86.         rh_status 
  87.     ;; 
  88.     condrestart|try-restart) 
  89.         rh_status_q || exit 0 
  90.     ;; 
  91.     *) 
  92.         echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" 
  93.         exit 2 
  94. esac 

日志轮替

将该脚本放入crontab定时任务中每天进行日志轮替

  1. #!/bin/sh
  2. log_dir="/usr/local/nginx/logs/"
  3. yesterday=`date +%Y%m%d -d '-1 day'`
  4. lastday =`date +%Y%m%d -d '-1 month'`
  5. /bin/rm ${log_dir}/access.${lastday}.log
  6. /bin/rm ${log_dir}/error.${lastday}.log
  7. /bin/mv ${log_dir}/access.log ${log_dir}/access.${yesterday}.log
  8. /bin/mv ${log_dir}/error.log ${log_dir}/error.${yesterday}.log
  9. kill -USR1 `cat /var/run/nginx.pid`
  10. /bin/gzip ${log_dir}/access.${yesterday}.log &
  11. /bin/gzip ${log_dir}/error.${yesterday}.log &

三 nginx的信号控制

  1. nginx can be controlled with signals. The process ID of the master process is written to the file /usr/local/nginx/logs/nginx.pid by default. This name may be changed at configuration time, or in nginx.conf using the pid directive. The master process supports the following signals:
  2.  
  3.    TERM, INT    fast shutdown  TERM信号快速关闭
  4.    QUIT graceful shutdown  完美的关闭
  5. #重新读取配置文件并检测语法是否正确,若正确则加载配置文件重新启动nginx的master进程
  6.    HUP  changing configuration, keeping up with a changed time zone (only for FreeBSD and Linux), starting new worker processes with a new configuration, graceful shutdown of old worker processes
  7. #重新打开log文件  
  8. USR1 re-opening log files
  9. #升级可执行文件 用户热部署
  10.    USR2 upgrading an executable file
  11. WINCH    graceful shutdown of worker processes