一:设置虚拟服务器

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通过按以下顺序搜索名称并使用其找到的第一个匹配来选择一个:

  1. 确切的名字(完整准确的名称)
  2. 以星号开头的最长通配符,例如:*.example.org
  3. 以星号结尾的最长通配符,如:mail.*
  4. 第一个匹配正则表达式(按照出现在配置文件中的顺序)

如果主机头字段与服务器名称不匹配,则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. 下面给出了选择处理请求的位置的确切逻辑

  1. 测试所有URI的前缀字符串。
  2. =(等号)修饰符定义了URI和前缀字符串完全匹配。如果找到完全匹配,则搜索停止。
  3. 如果^~(插入符号)修饰符预先添加最长匹配前缀字符串,则不会检查正则表达式。
  4. 存储最长匹配的前缀字符串。
  5. 根据正则表达式测试URI。
  6. 断开第一个匹配的正则表达式并使用相应的位置。
  7. 如果没有正则表达式匹配,则使用与存储的前缀字符串相对应的位置。

  =修饰符的典型用例是/(正斜杠)的请求。 如果请求/是频繁的,则指定=/作为location指令的参数加速处理,因为搜索匹配在第一次比较之后停止。

三:返回特定状态码

1.一些网站URI需要立即返回具有特定错误或重定向代码的响应

  未找到状态码:

  location /wrong/url {
   return 404;
  }

2.细节

  返回的第一个参数是响应代码。可选的第二个参数可以是重定向的URL(代码301,302,303307)或在响应体中返回文本。

  location /permanently/moved/url {
return 301 http://www.example.com/moved/here;
}

四:重写URL请求

1.rewrite指令

  在请求处理期间多次修改请求URI,该指令具有一个可选参数和两个必需参数。

  第一个(必需)参数是请求URI必须匹配的正则表达式。

  第二个参数是用于替换匹配URI的URI。

  可选的第三个参数是可以停止进一步重写指令的处理或发送重定向(代码301302)的标志

  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服务器的更多相关文章

  1. 【CentOS 7】nginx配置web服务器

    1,安装过程 [root@VM_1_14_centos ~]# cd /data/ [root@VM_1_14_centos data]# wget http://nginx.org/download ...

  2. linux使用nginx配置web服务器

    环境: CenterOS 7 1.安装nginx之前先安装nginx所需的依赖包 yum -y install zlib zlib-devel openssl openssl-devel pcre p ...

  3. nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  4. nginx高性能WEB服务器系列之五--实战项目线上nginx多站点配置

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  5. NGINX高性能Web服务器详解(读书笔记)

    原文地址:NGINX高性能Web服务器详解(读书笔记) 作者:夏寥寥 第4章  Nginx服务器的高级配置 4.1 针对IPv4的内核7个参数的配置优化 说明:我们可以将这些内核参数的值追加到Linu ...

  6. nginx配置图片服务器

    这几天研究了一下nginx配置图片服务器的相关内容,个人的一些收获与大家分享一下: Nginx是目前非常流行的web服务器,它起源于俄罗斯.它具有处理速度快,并发量大,占用资源极低等优点,尤其对于静态 ...

  7. Nginx作为web服务器

    为什么选择Nginx,nginx有诸多优点: nginx是轻量级web服务器,支持AIO.mmap.event-driven,解决了c10k问题.虚拟主机.基于名字和IP访问.nginx平滑升级 .热 ...

  8. 《Nginx高性能Web服务器》系列分享专栏

    <Nginx高性能Web服务器>系列分享专栏 [作者:Poechant] Nginx是目前最流行的基于BSD-like协议.轻量级.高性能的HTTP服务器.反向代理服务器和电子邮件(SMT ...

  9. nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

随机推荐

  1. JS对象中的原型

    对象的原型:每个对象都连接一个原型对象,并且它可以从中继承属性.所有通过对象字面量创建的对象都连接到object.prototype.当你创建一个新对象时,你可以选择某个对象作为它的原型.原型连接在更 ...

  2. Spring 3.2 @Autowired异常:expected single matching bean but found 2

    在使用Sping做单元测试时候,对RequestMappingHandlerAdapter(从处理器包装过来的适配器)进行自动装配, 发现报:expected single matching bean ...

  3. c++刷题(24/100)正则匹配与位运算

    题目1:正则表达式匹配 请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是指字符串的所有字 ...

  4. HDU 2391 Filthy Rich (dp)

    题目连接 Problem Description They say that in Phrygia, the streets are paved with gold. You're currently ...

  5. 利用Django REST framework快速实现文件上传下载功能

    安装包 pip install Pillow 设置 首先在settings.py中定义MEDIA_ROOT与MEDIA_URL.例如: MEDIA_ROOT = os.path.join(BASE_D ...

  6. vue中使用localStorage存储信息

    一 什么是localStorage 对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和 sessionSto ...

  7. 【算法学习】Fhq-Treap(无旋Treap)

    Treap——大名鼎鼎的随机二叉查找树,以优异的性能和简单的实现在OIer们中广泛流传. 这篇blog介绍一种不需要旋转操作来维护的Treap,即无旋Treap,也称Fhq-Treap. 它的巧妙之处 ...

  8. 【codeforces】【比赛题解】#861 CF Round #434 (Div.2)

    本来是rated,现在变成unrated,你说气不气. 链接. [A]k-凑整 题意: 一个正整数\(n\)的\(k\)-凑整数是最小的正整数\(x\)使得\(x\)在十进制下末尾有\(k\)个或更多 ...

  9. Oracle Certified Java Programmer 经典题目分析(二)

    ...接上篇 what is reserved(保留) words in java? A. run B. default C. implement D. import Java 关键字列表 (依字母排 ...

  10. 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重

    Java API提供的集合框架中Set接口下的集合对象默认是不能存储重复对象的,这里的重复判定是按照对象实例句柄的地址来判定的,地址相同则判定为重复,地址不同不管内容如何都判定为不重复,这有时与需求不 ...