user username [groupname];运行worker进程的用户名(组名)
pid /path/pid_file;PID文件的存储位置
worker_rlimit_nofile 65535;所有的work进程所能打开的文件句柄数量
worker_processes 4;worker进程的个数,通常是CPU的个数减去1
worker_cpu_affinity 00000001 00000010 00000100 00001000;worker进程绑定cpu核心,减少进程在CPU间的切换消耗。如果开机时,将系统的内核都绑定到指定CPU上,就能完全消除线程切换的消耗
timer_resolution 100ms;nginx的时间解析度,解析度越低,调用系统时间的消耗会降低
woker_priority -10;指定worker进程的nice值(-20,19)
accept_mutex {off|on};worker进程调度的时候是否使用轮询调度
use {epoll|rtsig|select|poll};建议自动选择,不需要配置
woker_conections 10240;设定单个worker进程所能接收的链接数量
##--with-debug编译安装nginx时启用该选项,可使用以下调试配置
daemon {on|off};是否以守护进程的方式运行程序
master_process {on|off};是否启用master/worker模式运行
error_log file_path 级别;错误日志的输出位置和日志级别
###http模块,nginx作为web服务器使用的配置,与http相关的指令仅能够放置在http、server、location、upstream、if的上下文中
http {
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
access_log /logs/nginx/access.log main;
keepalive_timeout #;长连接超时时间,默认75s
keepalive_requests #;每个长连接允许的请求资源数量
keepalive_disable [msie6|safari|none];针对特定的浏览器关闭keepalived长连接
tcp_nodely on|off;是否取消发送报文合并,合并多个小资源为一个报文,对用户的体验不好,建议为on
client_header_timeout #;读取http请求报文的首部的超时时长
client_body_timeout #;读取http请求报文body的超时时长
send_timeout #;发送报文的超时时长
upstream {
...
}
location URL {
root "/path/to/dir";
if .. {
...
}
}
server { #定义一个虚拟主机
listen 80;监听端口
server_name www.baidu.com;
#主机名,可以跟多个主机名,名称可以使用正则表达式(~)或通配符:优先精确匹配,其次左侧通配符匹配检(*.baidu.com),再其次右侧通配符检查匹配(mail.*),最后正则表达式匹配,都匹配不成功后使用default_server,没有default_server配置时,使用第一个server。
root "/vhost/web1";
#设置资源路径根目录,可以放在http,server,location的上下文环境中
location /image/ {
root "/image";
auth_basic "only for VIP";#认证时的提示文字
auth_basic_user_file /etc/nginx/users/.htpasswd;
#认证文件,尽量使用隐藏文件。htpasswd -c -m /etc/nginx/users/.htpasswd tom添加tom用户
}
#允许根据用户请求的URL来匹配,进行控制处理。可以嵌套多层,匹配方式(=|~|~*|^~)。
= 精确匹配,优先级最高
~^ 非正则匹配,前缀匹配
~ 正则表达式匹配
~* \.(txt|tex)$ 不区分大小写的正则表达式
/image/ 无任何符号的匹配,优先级低于正则表达式的前缀匹配,长度优先
/ 无符号匹配,之前的都匹配不到时的默认配置
if ($http_user_agent ~* MSIE){
#if上下文可以用在server和location的上下文中,也可以嵌套。
匹配条件:1、变量名,变量名是空值或者以0开头的值为假,其他为真
2、变量表达式,使用=,!=进行比较
3、使用正则表达式匹配:~,~*,!~,!~*
4、判断是否为文件:-f,!-f
5、路径:-d,!-d
6、文件存在:-e,!-e
7、文件是否有执行权限:-x,!-x
rewrite ^(.*)$ /msie/$1 break; #匹配微软浏览器,指定重定向加载文件
}
location ~* \.(jpg|gif|png|jpeg)$ {
#防盗链图片
valid_referer none blocked www.baidu.com;#指定合法图片引用
if ($invalid_referer) {
#非法引用重定向
rewrite ^/ http://www.baidu.com/403.html;
}
}}
server {
location / {
index index.html;默认首页
error_page 404 /404.html;重定义404页面
error_page 404 =200 /404.html;404错误以200状态码返回,并返回404.html页面
alias "/image/test/";路径映射,完全映射,root是根路径映射
deny 172.16.0.0/16;
allow all;
rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;#重定向文件路径,将images切换为imgs。应用场景:域名更换过度,seo优化,将动态文件转换为伪静态路径
#rewirte使用的flag:last表示此次重定向后,不再匹配之后的rewrite,直接将报文修改后,重新发送给nginx处理,重新进行匹配处理;break表示此次重定向处理后,不再匹配之后的rewrite,而且新生成的报文也不会再接收当前location下的rewrite匹配,这样能顾避免last引起的匹配死循环;
rewrite ^/images/(.*)$ http://www.baidu.com/$1 redirect;#redirect表示以302临时重定向返回新的URL给客户端;permanent表示以301永久重定向返回新的URL给客户端;使用redirect和permanent的时候新的要直接写新的url
}
location /status {
#显示nginx的状态:active connection:6 活动连接数,包括代理的 server accepts handled reauests 241(已经接受的链接) 241(已经处理的链接) 431(已经处理的请求) reading:0(正在接收的连接数) writing:1(正在处理的连接数) waiting:4(当前活动的连接数,往往会比reading+writing的数量多一些)
stub_status on;#该命令只能配置在loation中
allow from 172.16.0.0/16;
deny all;
}
}
}