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 www.chao.com.cer;
ssl_certificate_key www.chao.com.key;
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
}
location /web {
// alias 和 root 配置问题
// 访问 www.test.com/web/index.html
// 实际访问路径为 /wwwroot/www/web/index.html
// root 的配置是相对与/的根路径
root /wwwroot/www;
//alias /wwwroot/www/web;
index index.html;
}
// 对于根路径 root和alias配置一样
location / {
root /wwwroot/www;
//alias /wwwroot/www;
}