nginx.conf配置文件解析(http、server、location proxy_pass)

nginx.conf配置文件解析(http、server、location)

标签: nginxnginx-conf

2017-04-26 20:10 1031人阅读 评论(0) 收藏 举报

分类:

Nginx(8)

版权声明:本文为博主原创文章,未经博主允许不得转载。

nginx.conf文件在安装目录/conf目录下



1、定义Nginx运行的用户和用户组

user nginx nginx;

2、nginx进程数,建议设置为等于CPU总核心数

worker_processes 1;

3、全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

4、进程文件

pid /var/run/nginx.pid;

5、工作模式与连接数上限:worker_connections是单个后台worker process进程的最大并发链接数,并发总数是 worker_processes 和 worker_connections 的乘积, 即 max_clients = worker_processes * worker_connections

events {
    worker_connections  1024;
}

6、http下的一些配置及其意义

include       mime.types; #文件扩展名与文件类型映射表
default_type  application/octet-stream; #默认文件类型
sendfile on;  #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来 输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置 为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常 把这个改成off。
autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 120; #长连接超时时间,单位是秒
gzip on; #开启gzip压缩输出

7、server虚拟主机一些配置及其意义

例如:

http{
 #虚拟主机1
 server{
  listen       80;
  server_name  www.nginx1.com;
  location / {
     root   html;
     index  index.html index.htm;
  }
 }

 #虚拟主机2
 server{
  listen       80;
  server_name  localhost;
  location / {
     root   html;
     index  index.html index.htm;
  }
 }
}

这里server_name配置域名的时候,如果是本地测试,需要到windos下hosts文件里,把你的域名和ip添加进去(C:\Windows\System32\drivers\etc\hosts)

nginx支持三种类型的 虚拟主机配置

  • 1、基于ip的虚拟主机, (一块主机绑定多个ip地址)
server{
  listen       192.168.1.1:80;
  server_name  localhost;
}
server{
  listen       192.168.1.2:80;
  server_name  localhost;
}
  • 2、基于域名的虚拟主机(servername)
#域名可以有多个,用空格隔开
server{
  listen       80;
  server_name  www.nginx1.com www.nginx2.com;
}
server{
  listen       80;
  server_name  www.nginx3.com;
}
  • 3、基于端口的虚拟主机(listen不写ip的端口模式)
server{
  listen       80;
  server_name  localhost;
}
server{
  listen       81;
  server_name  localhost;
}

server下的location映射解析(官方中文文档:ngx_http_core_module)匹配规则:location [ = | ~ | ~* | ^~ ] uri { ... }

location URI {}:

对当前路径及子路径下的所有对象都生效;

location = URI {}:

精确匹配指定的路径(注意URL最好为具体路径),不包括子路径,因此,只对当前资源生效;

location ~ URI {}:

location ~* URI {}:

模式匹配URI,此处的URI可使用正则表达式,~区分字符大小写,~*不区 分字符大小写;

location ^~ URI {}:

不再检查正则表达式

优先级:= > ^~ > ~|~* > /|/dir/

举例:

location = / {
    [ configuration A ]
}

location / {
    [ configuration B ]
}

location /documents/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
    [ configuration E ]
} 

解答:请求“/”匹配配置A, 请求“/index.html”匹配配置B, 请求“/documents/document.html”匹配配置C, 请求“/images/1.gif”匹配配置D, 请求“/documents/1.jpg”匹配配置E

location配置规则

1、“ =”前缀的指令严格匹配这个查询。如果找到,停止搜索。

2、所有剩下的常规字符串,匹配最精确的(一般最长的那个)。如果这个匹配使用^?前缀,搜索停止。

3、正则表达式,在配置文件中是从上往下匹配的

4、如果第3条规则产生匹配的话,结果被使用。否则,如同从第2条规则被使用

特殊情况:

两种情况下,不需要继续匹配正则 location :

( 1 ) 当普通 location 前面指定了“ ^~ ”,特别告诉 Nginx 本条普 通 location 一旦匹配上,则不需要继续正则匹配。

( 2 ) 当普通location 恰好严格匹配上 ,不是最大前缀匹配,则不再继续匹配正则

在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。

下面四种情况分别用http://192.168.1.4/proxy/test.html 进行访问。

第一种:

location  /proxy/ {

proxy_pass http://127.0.0.1:81/;

}

会被代理到http://127.0.0.1:81/test.html 这个url

第二咱(相对于第一种,最后少一个 /)

location  /proxy/ {

proxy_pass http://127.0.0.1:81;

}

会被代理到http://127.0.0.1:81/proxy/test.html 这个url

第三种:

location  /proxy/ {

proxy_pass http://127.0.0.1:81/ftlynx/;

}

会被代理到http://127.0.0.1:81/ftlynx/test.html 这个url。

第四种情况(相对于第三种,最后少一个 / ):

location  /proxy/ {

proxy_pass http://127.0.0.1:81/ftlynx;

}

会被代理到http://127.0.0.1:81/ftlynxtest.html 这个url

上面的结果都是本人结合日志文件测试过的。从结果可以看出,应该说分为两种情况才正确。即http://127.0.0.1:81 (上面的第二种) 这种和 http://127.0.0.1:81/.... (上面的第1,3,4种) 这种。

另外nginx的反向代理Tengine(Nginx的升级版)的健康检查 也用到了location知识,可以去看看

时间: 2024-10-11 22:52:29

nginx.conf配置文件解析(http、server、location proxy_pass)的相关文章

Nginx的配置文件(nginx.conf)解析

步骤一:vi nginx.conf配置文件,参考本博文的最下面总结,自行去设置 最后nginx.conf内容为 步骤二:每次修改了nginx.conf配置文件后,都要reload下. index.html里写入如下内容 步骤三: 先来配一个路由映射 因为,我们的nginx.conf为 以上, 是基于域名的虚拟主机的nginx.conf配置.    当然,我们也可以基于端口的虚拟主机的nginx.conf配置 当然,我们也可以基于ip的虚拟主机的nginx.conf配置 当然,我们用完之后,你也可

Nginx之——配置文件解析

主配置文件(nginx.conf): user nginx nginx; #运行用户 worker_processes 8; #启动进程数,一般等于CPU的总核数或两倍,太多会占用CPU增高. error_log /tol/app/nginx/logs/nginx_error.log crit; #定义错误日志文件及级别,有 [debug|info|notice|warn|error|crit] pid /tol/app/nginx/logs/nginx.pid; #定义PID文件 worker

nginx搭建的cdn服务器的nginx.conf配置文件

默认的nginx.conf配置文件 worker_processes 1; events { worker_connections 1024; } http { access_log off; client_body_temp_path temp/client_body_temp; fastcgi_temp_path temp/fastcgi_temp; scgi_temp_path temp/scgi_temp; uwsgi_temp_path temp/uwsgi_temp; proxy_t

nginx.conf配置文件分析

#总结一下nginx.conf文件内容. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes  1; #全局错误日志 error_log  /var/log/nginx/error.log; #进程文件 pid        /var/run/nginx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与

nginx.conf 配置文件中文说明

###############################nginx.conf 配置文件中文说明 #user nobody; # user 主模块指令,指令nginx worker 运行用户和用户组(user xxxuser xxxgroup) ,默认由nobody运行 worker_processes 1; # worker_processes 主模块指令,指令nginx运行进程数,每个进程平均耗10m-12m内存,单核为1,多核为n #error_log logs/error.log;

Nginx(二)------nginx.conf 配置文件

上一篇博客我们将 nginx 安装在 /usr/local/nginx 目录下,其默认的配置文件都放在这个目录的 conf 目录下,而主配置文件 nginx.conf 也在其中,后续对 nginx 的使用基本上都是对此配置文件进行相应的修改,所以本篇博客我们先大致介绍一下该配置文件的结构. 1.nginx.conf 的主体结构 打开此文件,内容如下: 1 #user nobody; 2 worker_processes 1; 3 4 #error_log logs/error.log; 5 #e

[原]生产环境下的nginx.conf配置文件(多虚拟主机)

[原]生产环境下的nginx.conf配置文件(多虚拟主机) 2013-12-27阅读110 评论0 我的生产环境下的nginx.conf配置文件,做了虚拟主机设置的,大家可以根据需求更改,下载即可在自己的机器上使用了,本配置文件摘录自<构建高可用Linux服务器>(机械工业出版社),转载麻烦注明出处,谢谢,配置文件如下: user  www www;worker_processes 8;error_log  /data/logs/nginx_error.log  crit;pid      

Nginx(三):nginx.conf配置文件说明 【2】 文件结构和配置高亮

配置文件结构说明: 里面的配置文件有几个,当然最主要是nginx.conf配置文件. Main配置段,是核心配置段. Events { 配置事件的 } Http { } 标准http配置段,可选http配置段,都在http{}这里配置,每一种都是一个独立的. 注意:每一个配置参数都需要以分号结尾 标准模块也叫作核心模块是默认都安装的,如果不想安装就是-without什么,可选模块是默认不安装的,如果想安装就是-with-什么 可选模块比如-with-http_ssl_module和-with-h

Nginx(三):nginx.conf配置文件说明 【1】 配置参数说明

Nginx配置文件说明,不一定最全,但是最细,适合初学者或者概念不清晰者,如有理解错误的地方请指正. #nginx的worker进程用哪个用户和组进行登录,如果在编译时指定了,这里是禁用的,而且不会显示 #你的设置,为了便于识别,在保持禁用的同时你修改为实际用户和组 #user  nginx nginx; #[和优化有关] #启动几个worker进程,从Nginx1.9.10开始可以使用auto值,进行自动设置 #每个worker进程都是单线程进程,所以你叫它进程或者线程都行.这个值最大设置 #