nginx配置在conf/nginx.conf中,主要有全局,http,server,location块配置
user nobody;##运行用户为nobody用户
worker_processes 3;#工作进程数
worker_cpu_affinity 01 10 10;#将工作进程放入CPU的哪一核,本计算机有2核,进程1放入cpu0核,进程2放入cpu1核,进程3放入cpu1核
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;#info信息等级的错误消息,有debug,info,notice,warn,error,crit,alter,emerg的从高到低的等级,debug等级的信息最为详细
pid logs/nginx.pid;#主进程pid保存的文件
events {
use epoll;#使用epoll事件驱动模型,只能在events中配置
epoll_events 512;#设置epoll模型与内核传递事件的数量
#work_rlimit_sigpending 1024;#该配置用于rtsig配置信号队列长度,每个工作进程有独立的信号队列,当长度超出时,nginx调用poll模型进行处理未处理的请求
worker_connections 20490;##每一个工作进程同时开启的最大连接数
accept_mutex on;#设置进程接收客户连接序列化,接收互斥,一个连接到来时全部睡眠进程不会都被唤醒去争夺连接,只能在events块中配置
multi_accept on;#设置工作进程同时可以接收多个网络连接,默认为off,只能在events块中配置
}
stream { #代理TCP/UDP流量
upstream mysql {
server 127.0.0.1:3306;
}
server {
listen 6666;#代理tcp流量,如果是listen 6666 udp;则代表udp流量
proxy_pass mysql;
}
}
http {
include mime.types;#定义媒体类型与文件后缀的映射,客户端发送文件请求,服务器根据请求文件设置响应的Content-type,客户端根据其展示文件的内容
default_type application/octet-stream;#默认的媒体类型,没有文件名后缀时设置的Content-type
#媒体类型可定义在http,server,location块中
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; #生成的日志格式,服务器自带了内置变量,只能配置在http块中
access_log logs/access.log main;#配置接入日志,可配置在http,server,location块中
sendfile on;#启动高效传输文件的方式,直接在磁盘和tcp_socket之间传输,不用经过内存。不开启的话会经过内存中转
sendfile_max_chunk 128k;#设置每次sendfile传输的数据最大量,k代表kB,m代表MB,sendfile可在http,server,location块中定义
tcp_nopush on;#设置tcp在接收到数据包时不直接发送出去,而是等到数据包多的时候发送出去,有助于解决网络拥塞,非常时候ftp等
# tcp_nodelay on;#设置不延迟的tcp传输,默认是延迟的。
#keepalive_timeout 0;
keepalive_timeout 65;#设置连接保持的超时时间,超过这一时间就断开,秒为单位,可在http,server,location块中定义
client_header_buffer_size 4k;#设置客户端请求头部缓冲区大小,用来缓冲头部信息,大小可有linux命令getconf PAGESIZE来定
keepalive_requests 3000;#设置单一连接最大发送请求数,可在http,server,location块中定义
gzip on;#开启chunk编码动态压缩功能,压缩功能可在http,server,location块中定义
gzip_buffers 32 4k;#配置压缩时使用的内存空间,第一个数字是内存页数,第二个数字是内存页一页的大小
gzip_comp_level 2;#配置压缩级别,数字越大级别越高,但压缩速率变慢
gzip_disable "MSIE[1-6]\.";#配置UA是IE6以下的不使用压缩
gzip_http_version 1.1;#配置使用压缩的最低http协议版本
gzip_min_length 1024;#单位为B,配置使用压缩的最小响应数据长度,动态压缩之后Content-length长度可能没有
#gzip_proxied any;#配置后端响应数据全部实行压缩
gzip_types text/plain application/x-javascript text/css;#配置压缩的MIME媒体类型
gzip_vary on;#启用压缩标识,使用压缩时向客户端发送“Vary: Accept-Encoding”头域
#gzip_static on;#配置使用预压缩的静态压缩方式,需要编译模块,默认是没有此功能的
# gunzip_static on;#配置客户端不支持GZIP时不使用压缩,返回解压缩的数据,如果客户端支持则继续使用压缩的功能,默认没有此模块
# gunzip_buffers 32 4k;#配置解压缩的内存缓存空间
send_timeout 60;#设置在两次客户端请求之间,服务器发送响应没有等到客户端ack的超时时间
upstream tomcat
{
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:8081 weight=10;
}
server {
set $libo 1;
listen 80;#配置网络侦听,单一80等同与*:80,可以针对某一本地ip例如192.168.1.1:80,不带端口时默认是80
# listen *:8080 default_server backlog=1024 bind;default_server代表找不到主机时用此server块为默认主机,bind代表一个ip使用一个bind()函数处理,默认是多个用一个函数。backlog表示listen()函数最多挂起的网络连接
server_name www.libo.com libo.com;#虚拟主机名可以使用通配符和正则
# server_name *.libo.com www.libo.*;#使用通配符
# server_name ~^www\d+\.libo.com$;#~符号代表使用正则
#当有多个server_name匹配成功时,采用优先级较高的,优先级相同采用首次匹配的。优先级由高到低依次是准确匹配>开始时通配符匹配>结束时通配符匹配>正则匹配
# server_name ~^www\.(.+)\.com$;#可以捕获()中的内容,第一个()的变量为$1,第二个()的变量为$2,变量可用于本块中的上下文
charset utf-8;#设置采用何种字符编码发送response消息给客户端
#access_log logs/host.access.log main;
# rewrite /1 /libo/ redirect;
location / { #location字段格式为location [ = | ~ | ~* | ^~ ] uri { ... },uri有标准uri和正则uri,当不带可选项=或者^~时,有多个location时匹配顺序如下,先找到匹配的所有标准uri并记录匹配度最高的,之后找正则uri匹配,找>到的第一个就匹配结束搜索,如果没有找到就用刚找到的标准uri匹配度最高的。当带可选项=或者^~时,=代表严格匹配标准uri,匹配后直接使用此uri处理请求,^~代表找到标准uri匹配度最高的uri之后直接使用此uri,不用进行后续的匹配。正则表达式中~代表区分>大小写,~*代表不区分大小写。
root html;#代表根路径,如请求/libo/index.html,会到html/libo/index.html找资源,可在http,server,location块中配置
# alias /data/node1/;#代表改变匹配的uri,将/改为/data/node1/,并将查找资源的路径也改为/data/node1/,注意目录一定带/,例如/data/node1/,只能在location块中配置
# deny 6.6.8.14;#禁止指定ip访问
# allow 192.168.1.0/24;#允许指定网段访问
# deny all;#禁止所有ip访问
#ip访问权限从上往下匹配,匹配之后不进行后续匹配
# if ($libo) {
rewrite ^/1 /libo/ last;
rewrite ^/libo /lisi/ break;
# break;
# return 404;
# }
# auth_basic "auth";#配置基于密码的访问权限,后接验证时的指示信息
# auth_basic_user_file /data/nginx/password;#绝对路径
#密码文件格式如下
#libo:1234
#lisi:1235
#密码可以使用crypt()函数加密的密码,运行以下命令即可htpasswd -c -d /data/nginx/password username。htpasswd命令可以使用yum install -y httpd-tools安装
index index.html index.htm;#默认的索引文件,依次查找,顺序匹配,前面优先级高
}
location /libo/ {
rewrite /libo /lisi1/ break;
root html;
index index.html;
}
location ~ /* {
proxy_pass http://tomcat;
}
error_page 404 /404.html;#配置错误页,/404.html是指到html/404.html中找资源
error_page 403 http://www.otherlibo.com/403.html;#本地没权限,是指到其它服务器找资源
error_page 500 502 503 504 /50x.html;
location = /50x.html { #上面错误页重定向到html目录中找资源
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}