nginx配置详解

一、配置访问xxx.php文件的支持

  此时的nginx程序是一个服务器端的代理服务器,nginx接收到客户端xxx.php文件的请求,将这个请求交给本机9000端口的php-fpm程序处理,php-fpm程序以html格式将

  处理结果返回个nginx

  location ~ .php$ {

   root html;          #站点根目录

   fastcgi_pass 127.0.0.1:9000;  #cgi程序的端口

   fastcgi_index index.php;    #主页文件名

   include fastcgi.conf;      #引入配置文件

 }

二、nginx路由设置(location段) 

  (1) 语法:location  [ = | ~ | ~* | ^~ |  ]  uri  { ... } 或location @name {...}

  (2)匹配的类型

注:uri: 要匹配的字符串 eg: /index.php /add/  /delete 。uri前面的符号代表匹配类型(uri与符号间带空格)

= :对URI做精确匹配,请求的URI和patt一模一样

^~:最长前缀匹配,不区分字符大小写,不作正则匹配

~ :对URI做正则表达式模式匹配,区分字符大小写

~*:对URI做正则表达式模式匹配,不区分字符大小写

!~:   符合正则不匹配,不符合匹配,区分字符大小写

!~*: 符合正则不匹配,不符合匹配,不区分字符大小写

不带符号:普通匹配

匹配优先级从高到低:=, ^~, ~/~*, 不带符号 

location命中过程:

1.先进性精准匹配,如果命中立即返回结果并结束解析;

2.精准匹配未命中判断普通匹配,如果命中多个会记录下"最长的"命中结果,但不会结束解析;

3.继续判断正则匹配,按照正则匹配设置的规则正则表达式进行匹配,如果有多个正则匹配由上到下进行匹配,一旦匹配成功一个会立即返回结果并结束解析 

(3)设置访问权限

  deny  all;  

  return 403;

  allow ipaddr;  #允许该IP访问

(4)关闭访问日志(减轻负担)

  access_log off;

(4)设置响应内容在浏览器的属性

  expires 30d;  有效期30天  s  h

  

三、虚拟主机配置(server段)

  1.端口监听

  2.虚拟主机域名

  3.路由(location段)

  4.条件判断( if(){..} )

    -f,!-f  #判断是否存在文件

    -d,!-d  #是否存在目录

    -e, !-e  #是否存在文件或目录

    -x , !-x  #是否是可执行文件

    eg:if( !-e $requesr_filename){  #如果请求的资源不是一个文件或目录,

      rewrite ^/(.*)$ index.php last;

    }

四、nginx重写(server,location ,if)

  (1)重写相关指令

    1. last  #会重新对server发起请求,再匹配

    2. break  #终止匹配

    3. redirect  #临时重定向302,浏览器会先到这里再跳转到重定向位置

    4. permannent  #永久重定向301,浏览器再访问该资源时,直接到重定向位置

    5. if  #条件符合,执行大括号内语句(只能进行简单的是否判断)

    6. return  #结束路由匹配,返回状态码给客户端。returm 200

    7. rewrite  #将请求的资源路径重写为其它路径,再进行路由匹配

      rewrite ^/(.*)$ index.php last; 

      例:请求资源路径 12345/add 改写为   add?id=12345

      rewrite ^/(d+)/(.+)/  /$2?id=$1 last;

    8. set   #定义一个变量并赋值  set $host  'www';

    9. proxy_pass ipaddr;

  (2)重写应用场景

    1. 隐藏入口文件,部署TP

    2. 防盗链

    3. 将多级目录下的文件转成一个文件,增强seo

    4. 域名跳转

二、日志设置

  

原文地址:https://www.cnblogs.com/fanshehu/p/11878721.html