nginx之配置文件简析

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;
}

}

}

时间: 2024-10-06 16:15:46

nginx之配置文件简析的相关文章

/etc下主要配置文件简析

etc /etc/rcor/etc/rc.dor/etc/rc*.d 启动.或改变运行级时运行的scripts或scripts的目录. etc/rc.d/rc.sysinit 系统初始化相关,主要完成的任务 1.激活udev和selinux 2.根据etc/sysctl.conf文件,来设定内核参数 3.设定系统时钟 4.装载键盘映射 5.启用交换分区 6.设置主机名 7.根文件系统检测,并以读写方式重新挂载 8.激活RAID和LVM设备 9.启用磁盘配额 10.根据/etc/fstab,检查并

0002 - Spring MVC 拦截器源码简析:拦截器加载与执行

1.概述 Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以进行权限验证.记录请求信息的日志.判断用户是否登录等. 2.简单示例 2.1.继承 HandlerInterceptorAdapter 抽象类实现一个拦截器.代码如下: public class DemoInterceptor extends HandlerInterceptorAdapter { @Override    pu

借助LANMT构架,简析ngnix的使用

LNMP流程图 nginx PHP Mysql Nginx Fastcgi_pass <-FastCGI-> fastcgi-(php-fpm)<->wrapper Php 解析器 (Php.ini) <->mysql fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->

Nutch学习笔记——抓取过程简析

Nutch学习笔记二--抓取过程简析 学习环境: ubuntu 概要: Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. 通过nutch,诞生了hadoop.tika.gora. 先安装SVN和Ant环境.(通过编译源码方式来使用nutch) apt-get install ant apt-get install subversion [email protected]:~/data/nutch$ svn co https:

XMR恶意挖矿案例简析

前言 数字货币因其技术去中性化和经济价值等属性,逐渐成为大众关注的焦点,同时通过恶意挖矿获取数字货币是黑灰色产业获取收益的重要途径.本文简析通过蜜罐获取的XMR恶意挖矿事件:攻击者通过爆破SSH获取系统权限,配置root用户免密登录,并下载及执行XMR 挖矿程序,及XMR 网页挖矿程序.XMR挖矿程序耗肉鸡CPU/GPU资源,网页挖矿程序耗访问肉鸡服务器JS 网页的客户端资源 . 2018年10月11日,攻击者使用恶意IP(223.89.72.8)暴力破解Victim的SSH服务成功,获取系统账

web应用构架LAMT及tomcat负载简析

Httpd    (mod_jk.so) workers.properties文件 uriworkermap.properties文件 <--AJP1.3--> Tomcat  --> jdk 大致流程:apache服务器通过mod_jk.so 模块处理jsp文件的动态请求.通过tomcat worker等待执行servlet/JSP的tomcat实例.使用 AJP1.3协议与tomcat通信.tomcat有借助jdk解析. 负载就是 多台tomcat.共同解析apache发送的jsp请

CentOS的网络配置简析

我们在进行对CentOS的网络配置时,一般会从IP地址(IPADDR).子网掩码(NETMASK).网关(Gateway).主机名(HOSTNAME).DNS服务器等方面入手.而在CentOS中,又有着不同的命令或配置文件可以完成这些配置操作,接下来,我们将从ifcfg系命令,iproute2系命令以及配置文件3个方面来简析网络配置的方法. 一.ifcfg系命令 ifcfg系命令包括ifconfig,route,netstat和hostname. 1.ifconfig命令 用来配置一个网络接口.

sed简析

写一个shell命令,统计apache日志文件(access_log)中某一天中每个URL的访问次数,并按照次数由小到大的顺序排序输出:# cat /application/nginx/logs/20170202_access_www.log |awk '{print $7}'|sort| uniq -c |sort -n awk  '{print $7}' 匹配到 url 记录即日志文件格式的($http_referer)字段sort  是排序 ,并且标准输出到屏幕uniq -c  统计重复的

PostgreSQL的 pg_hba.conf 文件简析

最近试用PostgreSQL 9.04,将pg_hba.conf配置的一些心得分享. pg_hba.conf是客户端认证配置文件,定义如何认证客户端. 下面是常用的pg_hba.conf配置: 1 2 3 4 5 6 7 8 9 10 # TYPE  DATABASE  USER  CIDR-ADDRESS  METHOD   # "local" is for Unix domain socket connections only local    all      all