"Install Nginx yum -y install gcc* pcre-devel zlib-devel openssl-devel useradd -M -s /sbin/nologin nginx # nginx 运行用户 tar -zxf nginx* ./configure --prefix=/usr/l .."

Nginx Configuration file

Install Nginx

yum -y install gcc* pcre-devel zlib-devel openssl-devel
useradd -M -s /sbin/nologin nginx   # nginx 运行用户
tar -zxf nginx*
./configure --prefix=/usr/local/nginx 
    --user=nginx  --group=nginx --with-http_stub_status_module --with-http_realip_module --with-http_addition_module 
    --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module 
    --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module 
    --with-http_stub_status_module --with-http_auth_request_module --with-pcre --with-mail --with-mail_ssl_module --with-http_spdy_module

    make
    make  install
    chkconfig nginx on

Start Scripts Path:/etc/init.d/

#!/bin/bash
#chkconfig: 2345 99 20
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
PROG_FPM="/usr/local/sbin/php-fpm"
PIDF_FPM="/usr/local/php5/var/run/php-fpm.pid"
case "$1" in
 start)
   $PROG
   $PROG_FPM
   echo "Nginx service start success."
   ;;
 stop)
   kill -s QUIT $(cat $PIDF)
   kill -s QUIT $(cat $PIDF_FPM)
   echo "Nginx service stop success."
   ;;
 restart)
   $0 stop
   $0 start
   ;;
 reload)
   kill -s HUP $(cat $PIDF)
   kill -s HUP $(cat $PIDF_FPM)
   ;;
 *)
   echo " Usage:$0 (start:stop:restart:reload)"
   exit 1
esac

Document Descripton

user    nginx    nginx   #指定 Nginx 运行时的用户与组
worker_cpu_affinity 0001 0010 0100 1000;
#亲和力配置,让不同的进程使用不同的 CPU 核心,4 核心 4 线程时可以使用以上的配置。
2 核心使用 01  10;2 核心 4 线程为 01 10 01 10;
8 核心 8 线程使用  00000001 00000010 00000100 00001000 00010000  00100000   01000000 10000000;
worker_processes  4;   #进程数,即处理器请求的进程,可设置为 CPU 的核心数或者  CPU 核心数的 2 倍 
error_log  logs/error.log  warn;
#全局错误日志定义类型,格式有 [debug|info|notice|warn|error|crit],一定要设置在 warn 以上的级别
pid      logs/nginx.pid;
#把进程号记录到文件之中
worker_rlimit_nofile 51200;
#系统打开文件的最大数,可用 cat /proc/sys/fs/file-max 查看,基本使用百分之 60 左右
events {
    use epoll; 
#采用网络 IO 模型,有 select 与 epoll 可选,在大并发的情况下最优使用 epoll
    worker_connections  12800;
# #nginx 最大连接数 =worker 连接数 *worker 进程数
}
http {
    server_tokens off;  
    #隐藏 Nginx 的版本号信息
    include       mime.types;
    #文件扩展名与文件类型映射表
    default_type  application/octet-stream;
    #默认文件类型
    server_names_hash_bucket_size 128;
    #服务器域名 hash 表大小
    server_names_hash_max_size 512;     
    #域名服务器的最大 hash 表大小
    client_header_buffer_size 4k;
    #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过 1k,不过由于一般系统分页都要大于 1k,所以这里设置为分页大小。分页大小可以用命令 getconf PAGESIZE 取得。
    large_client_header_buffers 8 128k;
    #设定客户请求头缓存
    client_max_body_size 8m;
    #设定通过 nginx 上传文件的大小
    log_format  main  '$remote_addr - $remote_user [$time_local]"$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    #设定日志 main 的格式
    access_log  logs/access.log  main;
    #全局访问日志
    sendfile        on;
    #开启高效文件传输模式,sendfile 指令指定 nginx 是否调用 sendfile 函数来输出文件,对于普通应     用设为 on,如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I/O 处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成 off
    autoindex   off;
    #开启目录列表访问,适合下载服务器,默认关闭
    tcp_nopush     on;
    #防止网络阻塞
    tcp_nodelay    on;
    #防止网络阻塞
    keepalive_timeout  120;
    #长连接超时时间,单位是秒

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
   # Fasecgi 相关参数是为了改善网站的性能,减少资源占用,提高访问速度

#gzip 模块设置
    #开启 gzip 压缩输出
    gzip  on;
    #最小压缩文件大小
    gzip_min_length 1k;
    #压缩缓存区
    gzip_buffers 4 16k;
    #压缩版本(默认为 1.1,如果前端是 squid 2.5 采用 1.0)
    gzip_http_version 1.1;
    #压缩等级
    gzip_comp_level 2;
    #压缩类型,默认包含 textml,所以下面就不用再写了,写上去也不有问题,但是会有一个 warn
    gzip_types  text/plain application/x-javascript text/css application/xml;   # 安装目录下 minme.types 里定义了压缩类型 
    #vary header 支持。该选项可以让前端的缓存服务器缓存经过 GZIP 压缩的页面,例如用 Squid 缓存      经过 Nginx 压缩的数据。
    gzip_vary on;

Example

# 反向代理
location / {
  proxy_pass http://192.168.1.3:80;   # 通过 proxy_pass 将 client 的数据请求转发给后端 
}

# 负载调度
upstream qxfell_server {
         ip_hash;      #调度算法,默认 rr 轮训,hash 常用语解决 session 共享的问题
         server 192.168.1.240:80    weight  1;
         server 192.168.1.241:80    weight  1;
         server 192.168.1.242:80    weight  1 backup;    
         #backup 表示机器处于热备状态,weight 代表权重,权重越高代表使用越多
     }

# 在生产环境中需要设置一些信息,这样日志中能获取到真正的访问 IP
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;    #后端的 Web 服务器可以通过 X-Forwarded-For 获取用户真实 IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#以下是一些反向代理的配置,可选。
proxy_set_header Host $host;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; #nginx 跟后端服务器连接超时时间 (代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间 (代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间 (代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers 缓冲区,网页平均在 32k 以下的设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k;
#设定缓存文件夹大小,大于这个值,将从 upstream 服务器传 s

# 自带状态统计 (监控会用到)
htpasswd  -c /usr/local/nginx/conf/confpasswd username #利用 apache 自带的 htpasswd 生成密码进行登录验证    
location /NginxStatus {
       stub_status on;
       access_log on;
       auth_basic "NginxStatus";
       auth_basic_user_file confpasswd;
}

# 虚拟主机
# 在 nginx 配置文件中的 http{} 中间的每一个 server{} 区域都相当于一个虚拟主机,
# 即创建多个虚拟主机即添加多个 server{} 区域即可。
# 注意的是每台虚拟主机之间如果使用相同端口必须通过不同域名区分,如果使用相同域名必须通过不同端口区分,也就是说必须保持独立性
# 例:
    server {
        listen       80;
        server_name  www.qxfell.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
       proxy_set_header Host $host; 
                proxy_set_header X-Real-IP      $remote_addr; 
                proxy_set_header X-Forwarded-For 
                $proxy_add_x_forwarded_for; 
                proxy_pass  http://qxfell.com; 
                expires 1d;  
        }
        error_page   500 502 503 504  /50x.html;
        l。0ocation = /50x.html {
            root   html;
        }
    }

# https 配置
server { 
    listen 80; 
    server_name   www.qxfell.com; 
    rewrite ^(.*)$ https://$host$1 permanent;   # 用户访问网址 http 重定向到 https  还有另外几种方式 整理好一起更新
}  

server
  {
      listen 443; 
      server_name www.qxfell.com qxfell.com;
      ssl                  on; 
      ssl_certificate      /etc/nginx/cert/214234223453245.pem;  # 证书文件
      ssl_certificate_key  /etc/nginx/cert/346456456645663.key;
      ssl_session_timeout  5m; 
      ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers  HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; 
      ssl_prefer_server_ciphers   on; 
      access_log /var/log/nginx/www.qxfell.log main;

     location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
     }

Cut Logfile Scripts

#!/bin/bash
logfile=/logs/nginx/
logbk=nginx_log/backup/
logtime=`date +%y%m%d`
if [ ! -d $logbk ];then
    mkdir -p $logbk
fi
   cd $logfile 
   tar zcvfP ${logtime}.tar.gz *.log >>/dev/null && mv ${logtime}.tar.gz ${logbk} >>/dev/null 
   find $logfile -name "*.log" -exec rm {} \; >>/dev/null
   kill -USR1 $(cat /usr/local/server/nginx/logs/nginx.pid ) 
if [ $? -eq 0 ];then
    echo "${logtime} is good" >>/tmp/cut_nginx.log
else
     echo "${logtime} is bad" >> /tmp/cut_nginx.log
 fi

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:PipeSoloSymWide 等,欢迎大家加入,贡献开源。

    2405 引用 • 3795 回帖 • 623 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    186 引用 • 405 回帖 • 746 关注
感谢    关注    收藏    赞同    反对    举报    分享
2 回帖    
请输入回帖内容...
  • bdFK3000      

    我是在 angular 使 nginx
    nginx 好用..
    可以用在 component 間, 交換 資訊..
    GOOD!!

    感谢    赞同    反对    举报    分享       评论    回复
  • flynn API      

    😋 yep

    感谢    赞同    反对    举报    分享       评论    回复