加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

你真的了解如何将Nginx配置为Web服务器吗

发布时间:2018-12-17 05:40:41 所属栏目:外闻 来源:lufficc.com
导读:抽象来说,将 Nginx 配置为 Web 服务器就是定义处理哪些 URLS 和如何处理这些URLS 对应的请求。具体来说,就是定义一些虚拟服务器(Virtual Servers),控制具有特定 IP 和域名的请求。 更具体的来说, Nginx 通过定义一系列 locations 来控制对 URIS 的选择

一个简单的应用就是从 http 重定向到 https 时带上路径信息:

  1. server{    
  2.        ...    
  3.        return      301 https://lufficc.com$request_uri;    
  4.        ...    

返回特定状态码

如果你的网站上的一些资源永久移除了,最快最简洁的方法就是使用 return 指令直接返回:

  1. location /wrong/url {    
  2.     return 404;    

return 的第一个参数是响应代码。可选的第二个参数可以是重定向(对应于代码301,302,303和307)的 URL 或在响应正文中返回的文本。 例如:

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

return 指令可以包含在 location 和 server 上下文中:

  1. server{       
  2.       location / {       
  3.               return 404;       
  4.       }       

或者:

  1. server{    
  2.       ...    
  3.       return 404;    
  4.       location / {    
  5.           ...                
  6.       }    

错误处理

error_page 命令可以配置特定错误码的错误页面,或者重定向到其他的页面。下面的示例将在 404 错误发生时返回 /404.html 页面。

  1. error_page 404 /404.html; 

error_page 命令定义了如何处理错误,因此不会直接返回,而 return 确实会立即返回。当代理服务器或者 Nginx 处理时产生相应的错误的代码,均会返回相应的错误页面。

在下面的示例中,当 Nginx 找不到页面时,它将使用代码301替换代码404,并将客户端重定向到http://example.com/new/path.html 。 此配置很有用,比如当客户端仍尝试用旧的 URI 访问页面时,301代码通知浏览器页面已永久移除,并且需要自动替换为返回的新地址。

  1. location /old/path.html {    
  2.     error_page 404 =301 http:/example.com/new/path.html;    

重写 URIs

rewrite 指令可以多次修改请求的 URI。rewrite 的第一个参数是 URI需要匹配的正则表达式,第二个参数是将要替换的 URI。第三个参数可选,指示是否继续可以重写或者返回重定向代码(301或302)。例如:

  1. location /users/ {    
  2.     rewrite ^/users/(.*)$ /show?user=$1 break;    

您可以在 server 和 location 上下文中包括多个 rewrite 指令。 Nginx 按照它们发生的顺序一个一个地执行指令。 当选择 server 时,server 中的 rewrite 指令将执行一次。

在 Nginx 处理一组 rewrite 指令之后,它根据新的 URI 选择 location 。 如果所选 location 仍旧包含 rewrite 指令,它们将依次执行。 如果 URI 匹配所有,则在处理完所有定义的 rewrite 指令后,搜索新的 location 。

以下示例将 rewrite 指令与 return 指令结合使用:

  1. server {    
  2.     ...    
  3.     rewrite ^(/download/.*)/media/(.*)..*$ $1/mp3/$2.mp3 last;    
  4.     rewrite ^(/download/.*)/audio/(.*)..*$ $1/mp3/$2.ra  last;    
  5.     return  403;    
  6.     ...    

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读