首页 > 技术文章 > nginx 一些配置

rchao 2018-07-13 09:36 原文

worker_processes  4; #工作进程数
events {
    #epoll是多路复用IO(I/O Multiplexing)中的一种方式,
    #仅用于linux2.6以上内核,可以大大提高nginx的性能
    #use   epoll;  #我是win上用的所以屏蔽了

    accept_mutex on;  #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    worker_connections  1024; #单进程最大并发链接数
}

http {
    #设定mime类型,类型由mime.type文件定义
    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;
 
    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
    #对于普通应用,必须设为 on,
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
    #以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile     on;
    #tcp_nopush     on;
 
    #连接超时时间
    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay     on;
 
    #开启gzip压缩
    gzip  on;
    gzip_disable "MSIE [1-6].";
 
    #设定请求缓冲
    client_header_buffer_size    128k;
    large_client_header_buffers  4 128k;
 
 
    #设定虚拟主机配置
    server {
        #侦听80端口
        listen    80;
        #定义使用 www.nginx.cn访问
        server_name  www.nginx.cn;
 
        #定义服务器的默认网站根目录位置
        root html;
 
        #设定本虚拟主机的访问日志
        access_log  logs/nginx.access.log  main;
 
        #默认请求
        location / {
            
            #定义首页索引文件的名称
            index index.php index.html index.htm;   
 
        }
 
        # 定义错误提示页面
        error_page   500 502 503 504 /50x.html;
        location = /50x.html {
        }
 
        #静态文件,nginx自己处理
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {
            
            #过期30天,静态文件不怎么更新,过期可以设大一点,
            #如果频繁更新,则可以设置得小一点。
            expires 30d;
        }
 
        #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
        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;
        }
 
        #禁止访问 .htxxx 文件
            location ~ /.ht {
            deny all;
        }
 
    }
}

 

#http里面加入        限制单个IP的并发连接数  perip 是名字可以随便定义
limit_conn_zone $binary_remote_addr zone=perip:10m;
#perserver 是名字  `limit_conn 名字  数量`
limit_conn_zone $server_name zone=perserver:10m;

#$binary_remote_addr 限制同一客户端ip地址
#$server_name 是限制同一server最大并发数

#server里面加入  
limit_conn perip 10;   #限制单个ip最大连接数是10个
limit_conn perserver 100; #限制与该server的最大连接数

#限制上传大小50m
client_max_body_size 50m;

#和limit_rate一起使用  下载速度超过10M后速度限制为128k/s
limit_rate_after 10m; 
#限制下载速度为128k/s 
limit_rate 128k;

#让http请求重定向到https请求   
error_page 497  https://$host$uri?$args;

 

 

 

#https

listen       80;
listen       443 ssl;
server_name  www.chao.com;
#ssl on;
ssl_certificate chain.pem;
ssl_certificate_key key.pem;
ssl_session_cache shared:SSL:1m; 
ssl_session_timeout 5m;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#nginx 1.13.0以上版本设置为(1.13之前的版本不支持TLSv1.3) 主要TLSv1.0有漏洞不安全
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

 

 

REM 启动nginx.bat php

@echo off  
set php_home=d:/php-7.1.7-nts-Win32-VC14-x64
set nginx_home=d:/wnmp/nginx-1.14.0
  
REM Windows 下无效  
REM set PHP_FCGI_CHILDREN=5  
  
REM 每个进程处理的最大请求数,或设置为 Windows 环境变量  
set PHP_FCGI_MAX_REQUESTS=1000  
  
echo Starting PHP FastCGI...  
RunHiddenConsole.exe %php_home%/php-cgi.exe -b 127.0.0.1:9000 -c %php_home%/php.ini
   
echo Starting nginx...  
RunHiddenConsole.exe %nginx_home%/nginx.exe -p %nginx_home%

 

 

location /web/ {
    // nginx 支持history配置
    try_files $uri $uri/ /web/index.html;
}

 

 

location /web/ {
    #默认位off 表示忽略带下划线的参数
    #想要接收到带下划线的请求头参数 则设置为on
    underscores_in_headers on
}

 

推荐阅读