nginx配置文件

  nginx配置文件:一般默认在nginx安装目录下的conf/nginx.conf

  conf文件一般分为以下几个模块:

  1. 全局 块

  2. events 块

  3. http 块

  4. server 块

  5. location 块

  

  error_page命令用法:  error_page code [=[response]] uri

  code是http响应码,比如404,500等;response是将code转化为指定的码返回给请求方;uri可以是路径(以nginx安装路径下的html目录为根路径的相对路径),或者网址。

  比如 error_page 404 =499  /404.html

  表示404错误码时,返回给客户端499的错误码,并且读取 html/404.html 文件。

  如果错误页不想是在html目录为跟路径的相对路径,可以在location模块做一层映射:比如文件放在/data/www/404.html

error_page  404  /404.html;

location = /404.html {
     root   /data/www/;
}

  改了conf,重启服务后,发现访问返回404错误页成功。但是如果访问php脚本,并没有跳到想要的404错误页。

  这里需要配置一个选项,fastcgi_intercept_errors on;(在server或者location模块中写都可以。)

  

  ----

  配置location块 重要

  语法结构:location [ = | ~ | ~* | ^~ ]  uri {...}

  其中uri是可以包含正则表达式的字符串。

  几个可选项的说明如下:

  = : 请求字符串与uri 严格匹配,uri不能含有正则。如果匹配成功,直接处理,不再想下查找匹配了。

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

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

  ^~ : uri不能含有正则,找到和请求字符串匹配度最高的location,直接使用,不再使用其他location块中的正则uri和请求串匹配。

  显然,请求的字符串和location块中的uri,很可能是1对多的,nginx是怎么取舍的,什么优先级呢。简单说下:

  没有可选项时,nginx服务器首先在server块的多个location块中搜索是否有普通的uri(无正则)和请求串匹配,如果有多个能匹配,就记录匹配度最高的一个。

  然后,再去搜索正则的uri和请求串进行匹配,如果找到第一个正则uri匹配成功,则选取该location,停止匹配,如果没有正则uri匹配上,则选取之前普通uri匹配度最高的那个。

-----------

   基于IP配置nginx的访问权限

  两个指令

  1. allow

  2. deny

  语法结构: allow  address | CIDR | all ;

  address : 表示IP地址;

  CIDR : 表示前32位是IP地址,后边表示前多少位是网络部分,区分网络号和主机号。比如192.168.1.1/24 

  all : 表示全部允许或者拒绝。

  注意优先级:nginx配置再解析的过程中,遇到allow或者deny是按照顺序进行检查的。如果遇到匹配的配置,就停止继续向下搜索了。

  一个例子:IP 192.168.1.2 是允许访问的。匹配到中间的allow,就OK了,不向下走。

location / {
   deny  192.168.1.1;
   allow  192.168.1.0/24;
   deny   all;
}

-----------

  

  

原文地址:https://www.cnblogs.com/firstForEver/p/6753826.html