1.通过nginx的安装脚本来讲解nginx的安装

  1. #!/bin/bash
  2. #author zhangyifei
  3. #2013 2.27
  4. #email zyfforlinux@163.com
  5. #源码包的下载
  6. cd /usr/local/src
  7. wget http://down1.chinaunix.net/distfiles/nginx-1.2.5.tar.gz
  8. wget http://down1.chinaunix.net/distfiles/pcre-8.30.tar.bz2
  9. #pcre库的安装以支持nginx的rewiter的正则表达式
  10. tar jxvf pcre-8.30.tar.bz2
  11. cd pcre-8.30
  12. ./configure
  13. make && make install
  14. cd ..
  15. pcredir="pcre-8.30"
  16. soft="nginx-1.2.5.tar.gz"
  17. softdir="nginx-1.2.5"
  18. if [ -f $soft ]; then
  19.    tar zxvf $soft
  20. else
  21.    echo "$soft not exis"
  22.    exit
  23. fi
  24. #询问用户是否安装ssl模块和status模块
  25. read -p "do you install http_stub_status_module [Y/N]" args1
  26. echo "$args1"
  27. while [ "$args1" != "Y" ] && [ "$args1" != "y" ] && [ "$args1" != "N" ] && [ "$args1" != "n" ]
  28. do
  29.    read -p "please input  [Y/N]" args1
  30. done
  31.  
  32. if [ "$args1" == "Y" ] || [ "$args1" == "y" ]; then
  33.    args1="--with-http_stub_status_module"
  34. else
  35.    args1=""
  36. fi
  37. echo "$args1"
  38. read -p "do you install --with-http_ssl_module [Y/N]" args2
  39. while [ "$args2" != "Y" ] && [ "$args2" != "y" ] && [ "$args2" != "N" ] && [ "$args2" != "n" ]
  40. do
  41.    read -p "please input  [Y/N]" args2
  42. done
  43. echo "$args2"
  44. if [ "$args2" == "Y" ] || [ "$args2" == "y" ]; then
  45.    args2="--with-http_ssl_module"
  46. else
  47.    args2=""
  48. fi
  49. echo "$args2"
  50. #创建启动nginx的用户 并且不可登录
  51. nginxuser="nginx"
  52. useradd -s /sbin/nolgin $nginxuser
  53. cd $softdir
  54. ./configure --prefix=/usr/local/nginx \
  55. --user=$nginxuser \
  56. --group=$nginxuser \
  57. --with-pcre=/usr/local/src/$pcredir \
  58. $args1 $args2
  59.  
  60. make && make install

2.下面讲解nginx的默认配置文件

  1. #user  nobody;  指定启动nginx的用户和用户组
  2. worker_processes  1;  指定开启nginx的进程数 一般和逻辑cpu的
  3.  
  4. #error_log  logs/error.log; 错误日志的存放位置 和格式
  5. #error_log  logs/error.log  notice;
  6. #error_log  logs/error.log  info;
  7.  
  8. #pid        logs/nginx.pid; 进程ID文件的存放位置
  9.  
  10.  
  11. events {
  12.     worker_connections  1024; 单个后台worker process进程的最大并发链接数
  13. use epoll; 使用epoll机制 大大提高nginx的性能
  14. }
  15.  
  16.  
  17. http {
  18.     include       mime.types; 可处理的类型 html的类型威 text/html
  19.     default_type  application/octet-stream;
  20.  
  21. 定制日志格式
  22.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  23.     #                  '$status $body_bytes_sent "$http_referer" '
  24.     #                  '"$http_user_agent" "$http_x_forwarded_for"';
  25.  
  26.     #access_log  logs/access.log  main;
  27. sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime
  28.     sendfile        on; 
  29.     #tcp_nopush     on;
  30.  
  31.     #keepalive_timeout  0;
  32.     keepalive_timeout  65; keepalive的超时时间
  33.  
  34.     #gzip  on; gzip功能开启
  35.  
  36.     server {
  37.         listen       80;  监听的端口
  38.         server_name  localhost; 
  39.  
  40.         #charset koi8-r;
  41.  
  42.         #access_log  logs/host.access.log  main;
  43.  
  44.         location / {
  45.             root   html;  设定根目录
  46.             index  index.html index.htm; 设定索引启动器文件
  47.         }
  48.  
  49.         #error_page  404              /404.html;
  50.  
  51.         # redirect server error pages to the static page /50x.html
  52.         #
  53.         error_page   500 502 503 504  /50x.html; 定义错误文件重定向
  54.         location = /50x.html {
  55.             root   html;
  56.         }
  57. }
  58. }