3.Nginx常用功能介绍
Nginx常用功能介绍
- Nginx反向代理应用实例
反向代理(Reverse Proxy)方式是指通过代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并且从内部网络服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一台服务器。当一台代理服务器能够代理外部网络上的访问请求来访问内部网络时,这种代理服务器的方式成为反向代理服务。反向代理服务器经常用于web服务器,此时代理服务器在外部网络看来就是一台web服务器,而实际上反向代理服务器并没有保存任何网页的真实数据,所有的静态网页和动态程序都保存在内部网络的web服务器上。因此,对反向代理服务器的攻击并不会使web网站数据遭到破坏,这在一定程度上增强了web服务器的安全性。
反向代理服务器通常也称为web服务加速器,此时反向代理服务器就具有了代理缓存的功能,也就是说,反向代理服务器在接收客户端的请求后,首先从源服务器(内部网络上的web服务器)上获取内容,然后把内容返回给用户,同时,也会把内容保存到代理服务器上一份,这样日后再接收同样的信息请求时,他会把本地缓存里的内容直接发给用户,以此减少后端web服务器的压力,提高响应速度。这其实就是缓存服务器所实现的功能。
1.1多域名跳转应用实例
多域名跳转的需求在web应用配置中经常会用到,Apache虽然也可以实现类似功能,但是实现比较复杂,而通过nginx可以轻松实现。
这里列举一个简单的应用实例。假设一个网站有2个域名,分别是www.fjp.com和www.gxl.com,要实现当用户访问域名www.fjp.com请求通过nginx代理到192.168.66.90的8080端口的web目录下,而当管理员访问www.fjp.com/admin时请求代理到192.168.66.90的8080端口的admin目录下,而当用户访问www.gxl.com时将请求代理到192.168.66.90的8080端口的wap目录下。只需要再nginx配置中做如下设置即可。
为了重点说明反向代理的配置。这里仅列出nginx配置文件中的server配置段,而省略了其他段的配置:
server www.fjp.com
location / {
proxy_pass http:192.168.66.90:8080/web/;
}
location /admin {
proxy_pass http:192.168.66.90:8080/admin;
}
server www.gxl.com
location / {
proxy_pass http:192.168.66.90:8080/wap/;
}
1.2通过nginx重定向实现新旧域名过渡
在web应用中,需要网页重定向的情况有很多种,例如网页目录结构变动,网页的扩展名改变,网站域名改变,网页重命名等。当因为某种需求,需将网站老的域名用新的域名进行替换,单同时为了不丢失来自搜索引擎的流量,旧的域名也需要在一段时间内能够访问,并且要实现在用旧的域名访问网站请求自动转到新的域名上,这个时候就需要配置新旧域名过渡。在nginx下配置域名过渡的方法非常简单,有两种方法可以实现:
要求:访问www.fjp.com的请求,自动跳转到www.gxl.com对应的URL路径下
srver {
server_name www.fjp.com;
rewrite ^/(.*)$ http://www.gxl.com/$1 permanent;
}
server {
listen 80;
server_name www.gxl.com;
这个配置使用了nginx的重定向功能,通过rewrite模块的permanent参数实现永久重定向的HTTP状态301.
另外也可以通过判断nginx核心变量host实现重定向功能:
server {
listen 80;
server_name www.gxl.com www.fjp.com;
if ($host != 'www.gxl.com') {
rewrite ^/(.*)$ http://www.gxl.com/$1 permanent;
}
1.3alias在nginx下的应用
nginx也可以通过alias实现类似于Apache的别名功能,例于下面的一个设置:
location /I {
alias /var/www/html/images/;
}
在这个location配置段中,如果URL请求“/i/logo.gif”,那么nginx将会在服务器上查找“/var/www/html/images/logo.gif”文件,也就是说请求的URL中location后面的部分会被追加到alias指定的目录后面,而location后面的”/i”路径将会被自动丢弃,类似的例子还有:
location ~ ^/download/(.*)$ {
alias /home/webdata/www/$1
}
在这个例子中,如何URL请求“/download/ebook.tar.gz”,那么nginx将会在服务器上请求“/home/webdata/www/ebook.tar.gz”文件。
在nginx中,alias命令与root命令所实现的功能有几分相似,但是也有差别,例如:
location /i {
root /var/www/html/images/;
}
在这个location配置段中,如果URL请求“/i/logo.gif”,那么nginx将会在服务器上查找“/var/www/html/images/i/logo.gif”文件,同理:
location ~ ^/download/(.*)$ {,
root /home/webdata/www/$1
}
如果URL请求的是”/download/ebook.tar.gz”,那么nginx将会在服务器上查找“/home/webdata/www/download/ebook.tar.gz”文件。
从这两个例子可以看出alias命令和root命令的区别:alias指定的是当前目录,而root指定的是根目录,一般情况下,建议在“location /”中通过root命令来配置根目录,而在其他目录匹配的位置使用alias命令。
1.4location命令应用实例
location命令在Nginx配置中最常见,也最灵活。通过location命令能完整web系统中的各种特殊功能和配置。下面介绍location命令常见的匹配规则以及规则的优先级,首先看下面四个例子:
location = / {
[ config A ]
}
location / {
[ config B ]
}
location ^~ /images/ {
[ config C ]
}
location ~* \.(gif|jpg|jpeg|swf)$ {
[ config D ]
}
在这个例子中,第一个例子表示只匹配“/”目录的查询,优先级最高,其他三个例子中的匹配优先级依次降低。第二个例子匹配以“/”开始的所有查询,即所有查询都匹配。第三个例子匹配以“/images/”开始的查询,不再检查正则表达式。第四个例子匹配以gif,jpg,jpeg,swf结尾的文件,但匹配优先级低于第三个例子。
nginx功能强大,它几乎可以实现Apache所有的功能,下面简单介绍nginx中目录权限控制,IP访问控制,文件访问权限如何实现。
要实现如apache一样的目录列表,可添加如下配置:

可以看到,我们现在无法看到根目录下的这个文件,等我们在主配置文件中添加如下配置端:
location / {
root html;
index index.html index.php;
autoindex on; #开启目录浏览功能
autoindex_exact_size off; #显示目录的详细大小
autoindex_localtime on; #显示目录的详细时间
}
重启nginx服务以后,再在浏览器里面访问:

提示:这个意思就是我们可以浏览root定义的目录下面的文件,如果,我们想在整个网站中都开启这个功能,那么我们需要在server段里面定义网站的根目录。
要实现IP访问控制,需要使用ngx_http_access_module模块,此模块可以限制某些IP地址的客户端访问,看下面一个例子:
location / {
root html;
index index.html index.php;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
allow 192.168.147.136;
deny 192.168.147.0/32
deny all;
}
这样就是只允许136这台主机访问,拒绝其他所有主机。
要禁止访问某个目录,可添加如下设置:
location ~* ^/work/ {
deny all;
}
里面不能设置单个ip或者允许单个IP。
要禁止访问以TXT或doc为后缀的文件,可添加如下设置:
location ~* \.(txt|doc)$ {
root html;
deny all;
}
通过上面这些功能介绍,可以发现nginx非常灵活,功能也非常强大,是一台高性能的Web服务器。
3.Nginx常用功能介绍的更多相关文章
- Nginx常用功能
3.Nginx常用功能 3.1 反向代理服务器 3.1.1.demo2 a.我在tomcat下部署了一个javaweb项目,tomcat安装的服务器IP为:192.168.37.136,部署的项目在t ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- Nginx常用功能配置二
Nginx常用功能配置二 Nginx location匹配设置 location作用:可以根据用户请求的URI来执行不同的应用,根据用户请求的网站的地址URL匹配. location语法: locat ...
- Nginx常用功能配置一
Nginx常用功能配置 参数include配置 说明:如果日常工作中server标签存在太多,可以采用include配置模式,Nginx的主配置文件包含的所有虚拟主机的子配置文件会统一放入extra目 ...
- 转 2 jmeter常用功能介绍-测试计划、线程组
2 jmeter常用功能介绍-测试计划.线程组 1.测试计划测试用来描述一个性能测试,所有内容都是基于这个测试计划的. (1)User Defined Variables:设置用户全局变量.一般添 ...
- nginx常用功能和配置
nginx常用功能和配置 1.nginx常用功能和配置 1.1 限流 1.2 压力测试工具--Ab 1.2.1安装 1.2.2 测试 1.2.3 返回值 1.3 limit_conn_zone 1.4 ...
- [转]WebPack 常用功能介绍
概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...
- WebPack常用功能介绍
概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...
- 前端开发掌握nginx常用功能之rewrite
上一篇博文对nginx最常用功能的server及location的匹配规则进行了讲解,这也是nginx实现控制访问和反向代理的基础.掌握请求的匹配规则算是对nginx有了入门,但是这些往往还是不能满足 ...
随机推荐
- 75、django之ORM补充
本篇导航: QuerySet 中介模型 查询优化 一.QuerySet 1.可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. > ...
- 关于Unity里动态加载图片
Resources.Load 使用该方法可以动态加载资源 过程: 1.首先需要在Project面板里创建一个名为Resources的文件夹(名字必须是这个 不能写错啊) 2.把要加载的游戏对象放到该目 ...
- 垃圾陷阱洛谷dp
题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中.“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2<=D<=100)英尺. 卡门想把垃圾堆起来,等到 ...
- linux安装redis(转)
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
- Yahoo网站性能优化的34条军规
1.尽量减少HTTP请求次数 终端用户响应的时间中,有80%用于下载各项内容,这部分时间包括下载页面中的图像.样式表.脚本.Flash等.通过减少页面中的元素可以减少HTTP请求的次数,这是提高网页速 ...
- 数据库索引------Btree索引的使用限制
1.如果不是按照索引最左列开始查找,则无法使用索引. 比如说id+name 那么是name+id 的话 ,这个索引则无法使用. 2.使用索引时不能跳过索引中的列. 如果是id+name+ag ...
- Spring之bean二生命周期
上一博客主要学习了下bean的配置.注入.自定义属性编辑器,今天来熟悉bean的生命周期.在开发中生命周期是一个很常见的名词,基本每种编程语言都能找到与它关联的.关于bean的生命周期我在网上也找了好 ...
- Postgres的tuple的组装
1.相关的数据类型 我们先看相关的数据类型: HeapTupleData(src/include/access/htup.h) typedef struct HeapTupleData { uint3 ...
- TempFile模块
tempfile模块,用来对临时数据进行操作 tempfile 临时文件(夹)操作 tempfile.mkstemp([suffix="[, prefix='tmp'[, dir=None[ ...
- ADC/DAC设计常见40问
本文章是关于ADC/DAC设计经典问答,涵盖时钟占空比.共模电压.增益误差.微分相位误差.互调失真等常见问题. 1. 什么是小信号带宽(SSBW)? 小信号带宽(Small Signal Bandwi ...