做网站比较大的公司,站群系统有哪些,自己学做网站,聊城市东昌府区建设局网站文章目录 一、配置详细解释关闭版本修改启动的进程数cpu与work进程绑定nginx进程的优先级work进程打开的文件个数event事件 二、Http设置协议配置说明mime虚拟主机aliaslocationaccess模块验证模块自定义错误页面自定义日志存放位置try_files检测文件是否存在长连接 一、配置详… 文章目录 一、配置详细解释关闭版本修改启动的进程数cpu与work进程绑定nginx进程的优先级work进程打开的文件个数event事件 二、Http设置协议配置说明mime虚拟主机aliaslocationaccess模块验证模块自定义错误页面自定义日志存放位置try_files检测文件是否存在长连接 一、配置详细解释
Nginx的配置文件
配置文件由指令和指令块构成每条指令以;分号结尾指令与值之间以空格符号分隔include语句允许组合多个配置文件以提升可维护性include语句允许组合多个配置文件以提升可维护性pid号 /run/nginx.pidyum安装主配置文件 /etc/nginx/nginx.conf子配置文件 /etc/nginx/conf.d/*.conf
关闭版本
在主配置文件中http语句中加上 server_tokens off; 然后重新载入配置文件即可。 验证成功
修改启动的进程数 cpu与work进程绑定
将Nginx工作进程绑定到指定的CPU核心默认Nginx是不进行进程绑定的绑定并不是意味着当前nginx进程独占以一核心CPU但是可以保证此进程不会运行在其他核心上这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转减少了CPU对进程的资源分配与回收以及内存管理等因此可以有效的提升nginx服务器的性能。 这种称之为cpu的亲缘性。 注意要绑定一起绑定 worker_cpu_affinity 00000001 00000010 00000100 00001000;第0号—第3号CPU
nginx进程的优先级
即调整worker进程的优先级工作进程的优先级默认为0工作进程的优先级为-20~19 在主配置文件中加上worker_priority x; 验证成功
work进程打开的文件个数
worker_rlimit_nofile 65536; 上述所有worker进程能打开的文件数量上限包括:Nginx的所有连接例如与代理服务器的连接等而不仅仅是与客户端的连接另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制。需要与ulimit -n 或者limits.conf的值保持一致。
event事件
events {worker_connections 65536; use epoll;accept_mutex on; multi_accept on; }worker_connections 65536; #设置单个工作进程的最大并发连接数 use epoll; #使用epoll事件驱动Nginx支持众多的事件驱动比如:select、poll、epoll只能设置在events模块中设置。 accept_mutex on; #on为同一时刻一个请求轮流由work进程处理,而防止被同时唤醒所有worker,避免多个睡眠进程被唤醒的设置默认为off新请求会唤醒所有worker进程,此过程也称为惊群因此nginx刚安装完以后要进行适当的优化。建议设置为on multi_accept on; #ON时Nginx服务器的每个工作进程可以同时接受多个新的网络连接此指令默认为off即默认为一个工作进程只能一次接受一个新的网络连接打开后几个同时接受多个。建议设置为on
二、Http设置
http是一个大的语句块包含若干个小的语句块
协议配置说明 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 /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 4096;include /etc/nginx/mime.types;default_type application/octet-stream;server_tokens off;include /etc/nginx/conf.d/*.conf;log_format 定义日志的格式并取名为main access_log /var/log/nginx/access.log main;定义日志存放的位置并采用main格式 sendfile on; 开启高性能的文件传输机制可以直接在内核空间和应用程序空间之间传输数据而无需将数据从内核空间复制到应用程序空间从而提高了文件传输的效率和性能。零拷贝技术 tcp_nopush on; #在开启了sendfile的情况下合并请求后统一发送给客户端。 tcp_nodelay off; #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项当为off时延迟0.2s发送默认On时不延迟发送立即发送用户响应报文。 keepalive_timeout 65 65; #设置会话保持时间,第二个值为响应首部:keepAlived:timeout65,可以和第一个值不同 include mime.types; #导入支持的文件类型 default_type application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型访问其它类型时会提示下载不匹配的类型文件 include /etc/nginx/conf.d/*.conf;#表明子配置文件所在的位置。
mime
此项为支持的 文件格式如果不支持的格式 会自动帮你下载如果支持 就会显示在网页上。 /etc/nginx/mime.types
虚拟主机
将一台主机虚拟成多台主机有三种方式基于端口基于IP地址基于域名。 1.基于端口 root指定了主页文件的位置
2.基于域名 3.基于IP地址
alias 验证成功
location
在一个server中location配置段可存在多个用于实现从uri到文件系统的路径映射ngnix会根据用户请求的URI来检查定义的所有location按一定的优化级找出一个最佳匹配而后应用其配置在没有使用正则表达式的时候nginx会先在server中的多个location选取匹配度最高的一个uriuri是用户请求的字符串即域名后面的web文件路径然后使用该location模块中的正则url和字符串如果匹配成功就结束搜索并使用此location处理此请求。
基本语法规则 location [ | ~ | ~* | ^~ ] uri { … } 用于标准uri前需要请求字串与uri精确匹配大小敏感,如果匹配成功就停止向下匹配并立即处理请求^~ 用于标准uri前表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查不区分字符大小写~ 用于标准uri前表示包含正则表达式,并且区分大小写~* 用于标准uri前表示包含正则表达式,并且不区分大写不带符号 匹配起始于此uri的所有的uri
匹配优先级从高到低 , ^~, ~ / ~*谁写在前面谁优先级高, 不带符号
特别说明 ~* 用来对用户请求的uri做模糊匹配uri中无论都是大写、都是小写或者大小写混合此模式也都会匹配通常使用此模式匹配用户request中的静态资源并继续做下一步操作,此方式使用较多注意: 此方式中,对于Linux文件系统上的文件仍然是区分大小写的,如果磁盘文件不存在,仍会提示404。 ~* 虽然 不区分大小写 但是系统的文件系统区分大小写。
location遍历规则 解释优先遍历未开启正则的三种形式如果匹配上字符串这种形式意味着精确匹配则立即停止匹配。 如果没有匹配上则开始其他两种形式的匹配并记住最长字符的匹配。如果匹配上^ ~的形式则停止匹配如果最长匹配不是^ ~则需要继续进行正则匹配如果没有正则匹配则返回使用最长匹配。
access模块
访问控制模块用于控制访问的主机地址。可以用精准的IP地址也可以用网段。同时注意这个模块也是一旦命中就不会往下继续匹配了所以范围越小写的往上。
验证模块
htpasswd 此命令来自于httpd-tools包中没有的话自己安装下即可。 如何生成账号和用户
htpasswd -c 文件路径 姓名 交互式生成密码
htpasswd -bc 文件路径 姓名 密码 直接将密码跟在后面 -c 代表新建用户名和密码对应的文件
-b 将密码跟在用户名后验证成功。
自定义错误页面
我们可以改变默认的错误页面同时也可以用指定的响应状态码进行响应。
error_page code ... [[response]] uri;
页面错误代码
error_page 固定写法
code 响应码可以将响应码转换
uri 访问连接验证成功
自定义日志存放位置
默认日志文件放在/var/log/nginx下面但一台真实主机会虚拟成多台主机故将各自虚拟主机的日志文件分开放就很有需要。 当然错误日志可以规定当达到什么级别才记录。
error_log 文件路径 级别info debug等 可以忽略不写try_files检测文件是否存在
try_files会按顺序检查文件是否存在返回第一个找到的文件或文件夹结尾加斜线表示为文件夹如果所有文件或文件夹都找不到会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在否则会出现内部500错误。 注意如果没有托底的/about文件将会出现50X错误所以一定要设置。 验证成功。
优化操作如果没有托底界面可以自定义响应码返回然后结合重定义错误界面将客户引导至新的界面。
server{listen 80;server_name www.pc.com;root /data/nginx/pc;location / {root /data/nginx/pc/;try_files $uri $uri.html $uri/index.html 489;}error_page 489 /40x.html;location /40x.html {root /data/nginx/error/;}
}长连接
http 基于tcp协议需要三次握手再传输数据。肯定不想一次三次握手才能下载一个资源要一次三次握手下载多个资源。 这个时候就需要用到长连接。 keepalive_timeout timeout [header_timeout]; #设定保持连接超时时长0表示禁止长连接默认为75s通常配置在http字段作为站点全局配置。 keepalive_requests number; #在一次长连接上所允许请求的资源的最大数量默认为100次,建议适当调大。
keepalive_requests 3;
#最大下载三个资源就会断开
keepalive_timeout 60 65; #只能有一个空格
#开启长连接后返回客户端的会话保持时间为60s单次长连接累计请求达到指定次数请求或65秒就会被断开后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s如不设置客户端将不显示超时时间。
Keep-Alive:timeout60 #浏览器收到的服务器返回的报文
#如果设置为0表示关闭会话保持功能将如下显示
Connection:close #浏览器收到的服务器返回的报文对某种浏览器禁用长连接
keepalive_disable none | browser ...;
#对哪种浏览器禁用长连接