nginx配置web服务器
一:设置虚拟服务器
1.设置
http {
server {
listen 127.0.0.1:8080;
server_name example.org www.example.org;
}
}
2.解释
如果有多个服务器与请求的IP地址和端口相匹配,则NGINX将根据服务器块中的server_name
指令测试请求的主机头域。
server_name
的参数可以是完整(精确)名称,通配符或正则表达式。 通配符是一个字符串,其开头,结尾或两者都包含星号(*
); 星号匹配任何字符序列。 NGINX将Perl语法用于正则表达式; 在它们之前使用波浪号(〜
)。
也就是,server_name下都会访问上面的IP与端口。
如果匹配主机头几个名称,则NGINX通过按以下顺序搜索名称并使用其找到的第一个匹配来选择一个:
- 确切的名字(完整准确的名称)
- 以星号开头的最长通配符,例如:
*.example.org
- 以星号结尾的最长通配符,如:
mail.*
- 第一个匹配正则表达式(按照出现在配置文件中的顺序)
如果主机头字段与服务器名称不匹配,则NGINX会将请求路由到请求到达端口的默认服务器。 默认服务器是nginx.conf
文件中列出的第一个服务器
3.一个完整的例子
演示配置两个虚拟机,对应域名分别为:vhost1.com
和 vhost2.com。
vhost1.com
网站的主目录在/data/www/vhost1。
vhost2.com
网站的主目录在/data/www/vhost2。
4.conf
server {
listen 80;
server_name vhost1.com www.vhost1.com;
index index.html index.html;
root /data/www/vhost1;
access_log /var/log/vhost1.com.log;
}
server {
listen 80;
server_name vhost2.com www.vhost2.com;
index index.html index.html;
root /data/www/vhost2;
access_log /var/log/vhost2.com.log;
}
二:设置位置
1.解释
NGINX可以根据请求URI向不同的代理发送流量或提供不同的文件。 这些块是使用放置在server
指令中的location
指令来定义的。
location
指令有两种类型的参数:前缀字符串(路径名)和正则表达式。 对于要匹配前缀字符串的请求URI,必须以前缀字符串开头。
2.举例
正则表达式之前是区分大小写匹配的波形符号(~
),或者不区分大小写匹配的波形符号(~*
)。
以下示例将包含字符串.html
或.html
的URI与任何位置相匹配。
location ~ \.html? {
...
}
使用^~
修饰符对正则表达式给予更高的优先级
3. 下面给出了选择处理请求的位置的确切逻辑
- 测试所有URI的前缀字符串。
=
(等号)修饰符定义了URI和前缀字符串完全匹配。如果找到完全匹配,则搜索停止。- 如果
^~
(插入符号)修饰符预先添加最长匹配前缀字符串,则不会检查正则表达式。 - 存储最长匹配的前缀字符串。
- 根据正则表达式测试URI。
- 断开第一个匹配的正则表达式并使用相应的位置。
- 如果没有正则表达式匹配,则使用与存储的前缀字符串相对应的位置。
=
修饰符的典型用例是/
(正斜杠)的请求。 如果请求/
是频繁的,则指定=/
作为location
指令的参数加速处理,因为搜索匹配在第一次比较之后停止。
三:返回特定状态码
1.一些网站URI需要立即返回具有特定错误或重定向代码的响应
未找到状态码:
location /wrong/url {
return 404;
}
2.细节
返回的第一个参数是响应代码。可选的第二个参数可以是重定向的URL(代码301
,302
,303
和307
)或在响应体中返回文本。
location /permanently/moved/url {
return 301 http://www.example.com/moved/here;
}
四:重写URL请求
1.rewrite指令
在请求处理期间多次修改请求URI,该指令具有一个可选参数和两个必需参数。
第一个(必需)参数是请求URI必须匹配的正则表达式。
第二个参数是用于替换匹配URI的URI。
可选的第三个参数是可以停止进一步重写指令的处理或发送重定向(代码301
或302
)的标志
location /users/ {
rewrite ^/users/(.*)$ /show?user=$1 break;
}
2.与返回指令相结合的rewrite
server {
...
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;
return 403;
...
}
3.中断处理指令
last
- 停止执行当前服务器或位置上下文中的重写指令,但是NGINX会搜索与重写的URI匹配的位置,并且应用新位置中的任何重写指令(URI可以再次更改,往下继续匹配)。break
- 像break
指令一样,在当前上下文中停止处理重写指令,并取消搜索与新URI匹配的位置。新位置(location
)块中的rewrite
指令不执行。
五:重新http请求
1.解释
有时您需要重写或更改HTTP响应中的内容,将一个字符串替换为另一个字符串。
您可以使用sub_filter
指令来定义要应用的重写。 该指令支持变量和替代链,使更复杂的更改成为可能
location / {
sub_filter /blog/ /blog-staging/;
sub_filter_once off;
}
2.sub_filter_once指令
告诉NGINX在一个位置(location
)内连续应用sub_filter
伪指令
location / {
sub_filter 'href="http://127.0.0.1:8080/' 'href="http://$host/';
sub_filter 'img src="http://127.0.0.1:8080/' 'img src="http://$host/';
sub_filter_once on;
}
如果发生另一个sub_filter
匹配,则使用sub_filter
修改的响应部分将不再被替换。
3.error_page
指令
error_page 404 /404.html;
指定要返回404
页面错误代码的页面(/404.html
)。
当NGINX找不到页面时,它会将代码301
替换为代码404
,并将客户端重定向到http:/example.com/new/path.html
。
location /old/path.html {
error_page 404 =301 http:/example.com/new/path.html;
}
nginx配置web服务器的更多相关文章
- 【CentOS 7】nginx配置web服务器
1,安装过程 [root@VM_1_14_centos ~]# cd /data/ [root@VM_1_14_centos data]# wget http://nginx.org/download ...
- linux使用nginx配置web服务器
环境: CenterOS 7 1.安装nginx之前先安装nginx所需的依赖包 yum -y install zlib zlib-devel openssl openssl-devel pcre p ...
- nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- nginx高性能WEB服务器系列之五--实战项目线上nginx多站点配置
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- NGINX高性能Web服务器详解(读书笔记)
原文地址:NGINX高性能Web服务器详解(读书笔记) 作者:夏寥寥 第4章 Nginx服务器的高级配置 4.1 针对IPv4的内核7个参数的配置优化 说明:我们可以将这些内核参数的值追加到Linu ...
- nginx配置图片服务器
这几天研究了一下nginx配置图片服务器的相关内容,个人的一些收获与大家分享一下: Nginx是目前非常流行的web服务器,它起源于俄罗斯.它具有处理速度快,并发量大,占用资源极低等优点,尤其对于静态 ...
- Nginx作为web服务器
为什么选择Nginx,nginx有诸多优点: nginx是轻量级web服务器,支持AIO.mmap.event-driven,解决了c10k问题.虚拟主机.基于名字和IP访问.nginx平滑升级 .热 ...
- 《Nginx高性能Web服务器》系列分享专栏
<Nginx高性能Web服务器>系列分享专栏 [作者:Poechant] Nginx是目前最流行的基于BSD-like协议.轻量级.高性能的HTTP服务器.反向代理服务器和电子邮件(SMT ...
- nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
随机推荐
- Java并发编程原理与实战十七:AQS实现重入锁
一.什么是重入锁 可重入锁就是当前持有锁的线程能够多次获取该锁,无需等待 二.什么是AQS AQS是JDK1.5提供的一个基于FIFO等待队列实现的一个用于实现同步器的基础框架,这个基础框架的重要性可 ...
- git提示error setting certificate verify locations解决办法
先打开git bash窗口 执行命令: git config --system http.sslcainfo "C:\Program Files (x86)\git\bin\curl-ca- ...
- 2014年最佳的10款 PHP 开发框架
PHP去年发生了翻天覆地的变化.似乎每个人都有一个想法一个好的框架应该是什么样子,但话又说回来,没有多少面积制品类型的框架或框架的最终实际使用在不同的生产项目. 你知道哪个框架选择为您的生产计划吗?你 ...
- 美轮美奂!9款设计独特的jQuery/CSS3全新应用插件(下拉菜单、动画、图表、导航等)
今天要为大家分享9款设计非常独特的jQuery/CSS3全新应用插件,插件包含菜单.jQuery焦点图.jQuery表单.jQuery图片特效等.下面大家一起来看看吧. 1.jQuery水晶样式下拉导 ...
- 05.UIDynamic
CHENYILONG Blog 05.UIDynamic Fullscreen © chenyilong. Powered by Postach.io Blog
- ORA 00972 错误处理
Oracle 11G SQL 写好的脚本执行后报错:ORA 00972 标识符过长 可能的原因一: select 语句中的字段别名太长,中文字符别名最长为10个汉字,简化别名名称,问题得到解决. 可能 ...
- hdu 1254 推箱子(双重bfs)
题目链接 Problem Description 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能 ...
- javascript 中的类数组和数组
什么是类数组呢? 我们先来看一段代码: function fn() { console.dir(arguments); } fn(1,2,3,4,5,6,7,8,9,10); 这段代码的执行后,在 c ...
- 引发类型为“System.OutOfMemoryException”的异常
在运维工作中,经常能接到客户的反馈这个:引发类型为“System.OutOfMemoryException”的异常.客户反馈物理内存都还有富余,怎么报内存不足的错误呢! 什么时候会引发System.O ...
- WeX5入门之欢乐捕鱼打包
一.下载欢乐捕鱼的素材包 https://files.cnblogs.com/files/wordblog/%E7%B4%A0%E6%9D%90.zip 二.把欢乐捕鱼素材放入项目中 并启动tomca ...