前面第2篇文章中列出了全局段、events段、http段的一些指令的意义和用法,这篇文章将介绍server段和location段的相关指令。

server段配置

listen:

listen指令有三种配置方法:

1、listen address[:port] [ default_server ]  [ ssl ];

2、listen port [ default_server ]  [ ssl ];

3、listen unix:path [ default_server ]  [ ssl ];

使用示例:

listen *:80 | *:8000;   ###监听所有80和8000端口

listen 192.168.1.10;###监听具体IP的所有端口上的连接

listen 8000;###监听具体端口上的所有IP连接,等同于listen  *:8000;

server_name:

语法:server_name  name...;

设置虚拟主机名称。可以设置多个name,例如:

server_name  myserver.com www.myserver.com;

name中可以使用通配符*,但是通配符只能用在由三段字符串组成的名称的首段或尾段,或者由两段字符串组成的名称的尾段。例如:

server_name   *.myserver.com  www.myserver.*;

name中还可以使用正则表达式,并使用波浪号“~”作为正则表达式字符串的开始标记。例如:

server_name   ~^www\d+\.myserver\.com$;

表示以匹配www开头,后面紧跟一个或者多个数字,后面是myserver,并且以com结尾的name

由于server_name指令支持通配符和正则表达式两种配置名称的方式,因此在包含有多个虚拟主机的配置文件中,可能会出现一个名称被多个虚拟主机的server_name匹配成功,那么来自这个名称的请求到底被哪个虚拟主机处理呢?Nginx会根据以下优先级来选择虚拟主机响应用户端的请求:

1、准确匹配server_name

2、通配符开开始时匹配server_name成功

3、通配符在结尾时匹配server_name成功

4、正则表达式匹配server_name成功

5、如果server_name被同一优先级的匹配方式匹配到,则谁先匹配到谁负责响应。

root:

语法:root  path;

指定根目录路径。

示例:

location  /data/ {

root  /wwwroot/html;

}

当location接收到“/data/index.html”的访问请求时,会在/wwwroot/html/data/目录下找到index.html来响应用户请求。

index:

设置默认首页,一般有两个作用,一是,用户在发出请求访问网站时,请求地址可以不写首页名称,二是,可以对一个请求,根据其请求的内容而设置不用的首页,该指令的语法结构为:

index  file ...;

示例:server {

listen 80;

server_name test;

error_log /etc/nginx/conf.d/error.log;

root /wwwroot/html;

index c.html;

location /t/ {

root /wwwroot/html;

index a.html;

}

}

error_page:

设置网站的错误页面,语法为:

error_page  code ... [=[response]]uri;

code:要处理的HTTP错误代码

response:将code指定的错误代码转换为新的错误代码

uri:错误页面的路径或者网站地址,这个uri是相对于root设置的根路径而言的。

示例:

error_page  404  /404.html;

基于IP的访问控制:

allow  address | CIDR | unix |all;

设置允许访问的IP范围

deny  address | CIDR | unix:| all;

设置拒绝访问的IP范围

示例:location /t/ {

root /data/www/vhost2/;

allow 172.16.100.120;

deny all;

}

仅允许172.16.100.120这个IP地址访问

基于账户密码访问Nginx服务器

auth_basic string | off;

是否启用密码认证

auth_basic_user_file  file;

指定密码认证的配置文件路径,只有在auth_basic启用时有效。

示例:创建一个server.conf的配置文件,并设置基于账号密码访问该server中配置的虚拟主机

1、先创建server.conf的配置文件

#cd /etc/nginx/conf.d/

#vim server.confserver {

listen 8888;

server_name test;

root /wwwroot/html;

location /t/ {

auth_basic "Admin Area";

auth_basic_user_file  /etc/nginx/.ngxpasswd;

}

}

2、创建账号密码文件,需要安装httpd

#htpasswd -c -m /etc/nginx/.ngxpasswd tom

创建密码文件,路径为/etc/nginx/.ngxpasswd  并创建一个tom的账号,命令会提示输入密码

#htpasswd  -m /etc/nginx/.ngxpasswd jerry

再创建一个名为Jerry的账号,创建第二个账号时不用-c选项

3、测试访问网站

stub_status:

通过制定的uri输出stub_status,只能定义在server和location中。

示例:server {

listen 8889;

server_name test;

root /wwwroot/html;

location /t/ {

stub_status;

}

}

当前活动客户端连接数包括waiting状态的客户端

accepts:已接受的客户端连接总数量

handled : 已处理的客户端连接数量

requests: 客户端总请求数量

reading:当前nginx正在读取客户端请求报文的连接数量数量

writing:正在响应客户端请求报文的连接数量

waiting:等待其发出请求的空闲连接数量

location段配置:

注意,location段只能在server段中配置,前面的文章有讲过。

其配置结构为:server {

...

location [PATTERN] {

...

}

location [PATTERN] {

...

}

}

location的语法结构为:

location [ = | ~ | ~* | ^~ ] uri { ...}

其中uri变量是带匹配的请求字符串,可以是不含正则表达式的字符串,如/myserver.php等。也可以是含有正则表达式的字符串,如\.php$(表示以.php结尾的URL)。不含正则表达式的uri称为标准uri,含有正则表达式的uri称为正则uri。

方括号中的都是可选项,用来改变请求字符串与uri的匹配方式。在介绍这几个标识的含义之前,先说说Nginx服务器是如何在sever块中所有location块的uri和请求的字符串匹配的:

在不添加此选项之前,Nginx服务器首先在server块的多个location中搜索是否有标准uri和请求的字符串匹配,如果有多个匹配,就记录匹配度最高的一个。然后在用location块中的正则uri和请求的字符串匹配,当第一个正则uri匹配成功时,结束搜索,并使用这个location块处理处理此请求。如果正则匹配全部失败,则使用刚才记录的匹配度最高的location块来处理请求

“=”:用于标准uri前,要求请求字符串与uri严格匹配,如果匹配成功则立即停止向下所有并立即处理此请求。

“~”:用于表示uri包含正则表达式,并且区分大小写

“~*”:用于表示uri包含正则表达式,并且不区分大小写

“^~”:用于标准uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。

匹配优先级:精确匹配“=” > “^~” > “~”或者~*> 不带符号的URL

location段的配置指令:

root:

指定根目录,语法为:root  path;

该指令也还能用于http段和server段中。

示例:

location  /data/ {

root  /locationtest1;

}

当location块接收到“/data/index.htm”的请求时,将在/locationtest1/data/目录下找到index.htm来响应请求。

alias:

定义路径别名。语法:alias  path;

注意,这里的path是修改后的根路径,而不是相对于root 的路径

示例:server {

listen 80;

server_name test;

error_log /etc/nginx/conf.d/error.log;

root /wwwroot/html;

index c.html;

location /abc/ {

alias /wwwroot/html/data/zeng/;

}

}

当用户请求test/abc/index.html时,Nginx将从/wwwroot/html/data/zeng/目录中找到index.html来响应请求。

index:

设置默认主页,和在server段中的用法一样,不再作说明。

php的server和location,3、Nginx关于server块和location块的配置相关推荐

  1. Nginx的server块和location块的简单说明

    server块和location块 server块和location块都是我们要重点讲解和学习的内容,因为我们后面会对Nginx的功能进行详细讲解,所以这块内容就放到静态资源部署的地方给大家详细说明. ...

  2. Nginx一个server配置多个location

    公司测试环境使用nginx部署多个前端项目.网上查到了两个办法: 在配置文件中增加多个location,每个location对应一个项目 比如使用80端口,location / 访问官网: locat ...

  3. php web server部署(PHP+Nginx+Redis+MySQL)

    1. 运行环境和软件准备 操作系统:Windows10_x64 数据库:mysql-5.7.17-winx64.msi Redis:Redis-x64-3.2.100.msi PHP:php-7.3. ...

  4. nginx代理人server结合tomcat采用

    相信非常多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那到底它有什么作用呢?可能非常多人未必了解. 说到反向代理,可能非常多人都听说,但详细什么是反向代理,非常多人预计就 ...

  5. 全网详细介绍nginx的反向代理、正向代理配置,location的指令说明,反向代理的两个示例代码以及全局块,events块和http快的说明。

    文章目录 1. 文章引言 2. 何谓反向代理 3. 解析nginx的配置文件 3.1 全局块(global block) 3.2 events块(events block) 3.3 http块(htt ...

  6. 让人扎心的Nginx rewrite跳转及Location

    目录 一.Nginx跳转的实现方式 一.rewrite概述 一.rewrite跳转实现 二.常用的Nginx正则表达式 三.rewrite的优先级 四.rewrite的flag标记 二.locatio ...

  7. nginx(九)find_config阶段的location指令

    一   location server块中的'rewrite'阶段执行完,进入'find_config'阶段,进行'location'匹配 ①   location 细节点: '$uri[不携带查询参 ...

  8. 图文解说nginx中server的匹配顺序

    在开始处理一个http请求时,nginx会取出header头中的host,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server块来处理这个请求. ...

  9. 哎呦报错啦怎么办?nginx: [emerg] “server“ directive is not allowed here in /usr/local/nginx/conf/nginx.conf53

    报错怎么办?不要慌,排它! 1.具体报错提示信息 nginx: [emerg] "server" directive is not allowed here in /usr/loc ...

最新文章

  1. jdb java_JDB - 介绍
  2. Access restrictions on Jars
  3. boost random library的使用
  4. Intel3945ABG无线上网问题总结
  5. 三分钟教你用 Scarlet 写一个 WebSocket App
  6. 拦截Windows消息
  7. 中宽通讯行靠谱吗_通讯录防爆技术到底靠谱吗?能不能拦截“骚扰电话”?真实经历告诉你!...
  8. java 解析sh文件内容_java 文件读取
  9. 平方根的计算(二分逼近、牛顿拉普生法)
  10. Profinet IO设备
  11. 安卓APK文件结构解析 怎样去除内置广告 及修改图标和文字
  12. canvas绘制频谱图
  13. 郭天祥的10天学会51单片机_第六节
  14. rundll32.exe传入参数
  15. JavaScript高级学习(三)
  16. 502 bad gateway原因、解决方法
  17. 喜大普奔,又一国标正式进入国际标准
  18. 美赛论文Latex简易模板 | 快速上手(附注释)
  19. css实现文字左右添加横线
  20. 8、TM4单片机的滴答定时器,及利用定时器精确延时

热门文章

  1. PHP中不用第三个变量交换两个变量的值
  2. linux下挂载U盘
  3. linux cat 命令详解
  4. 微信小程序 html css xml,微信小程序 使用towxml解析html流程及踩坑记录
  5. 【Paper】2020_Distributed optimal consensus with obstacle avoidance algorithm of mixed-order UAVs
  6. 【数理知识】拉格朗日乘数 Lagrange multipliers
  7. 8.5 特征选择-机器学习笔记-斯坦福吴恩达教授
  8. 基于小波变换的图像解压缩
  9. UOJ#449. 【集训队作业2018】喂鸽子
  10. linux写时复制技术初探