聊聊 nginx 的那些事

Nginx 目录介绍

  • conf : 配置文件
  • html : 网页文件
  • logs : 日志文件
  • sbin : 主要二进制程序

启动Nginx

  • 命令:cd /path/nginx
  • 启动:./sbin/nginx
    • 启动时有时会报错:80端口被占用。
    • 解决方法是,找到占用80端口的程序,并杀掉进程。
    • natstat -antp : 查看端口信息
  • 如果没有发现有程序占用80端口,并且nginx启动还是报错的话,有可能是 nginx 试图同时监听 ipv4 和 ipv6 的 80 端口导致的;解决方法:



     

Nginx 常用命令

  • nginx -t : 检测配置文件是否正确,如果出错会报错误信息;
  • nginx -s reload : 加载最新配置
  • nginx -s stop : 立即停止
  • nginx -s quit : 优雅停止
  • nginx -s reopen : 重新打开配置文件

Nginx 配置段详解

Nginx配置虚拟主机

  • 基于域名的虚拟主机

 

  • 基于端口的虚拟域名

 

Nginx 日志管理

  • 观察 server 段,可以看到如下的信息

  • 说明 nginx 的请求日志保存在 logs/access.log 中,日志的保存格式是: main;
  • 什么是 main 格式?还有什么其他格式呢?

  • 还可以自定义格式

  • 日志格式 是指记录哪些选项

默认的日志格式: main

如默认的 main 日志格式,记录这么几项 远程IP- 远程用户/用户时间 请求方法(如GET/POST) 请求体body长度 referer来源信息 http-user-agent用户代理/蜘蛛 ,被转发的请求的原始IP http_x_forwarded_for : 在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP

小应用

  • 分析思路: 凌晨00:00:01,把昨天的日志重命名,放在相应的目录下 再USR1信息号控制nginx重新生成新的日志文件

  • 定时任务

Nginx 和 PHP

  • 通信原理:

apache一般是把php 当做自己的一个 模块 来启动的. 而nginx则是把http请求变量(如get,user_agent等)转发给 php 进程,即 php 独立进程,与 nginx 进行通信. 称为 fastcgi 运行方式. 因此,为 apache所编译的php,是不能用于nginx的.

  • nginx 和 PHP的配置

Nginx 与 Rewrite 规则

  • rewrite 语法

注意:用url重写时, 正则里如果有 {} ,正则要用双引号包起来

pathinfo 支持

第一种修改方式

可以通过rewrite方式代替php中的PATH_INFO

nginx配置文件中设置PATH_INFO值

nginx 可以使用 fastcgi_split_path_info指令来设置 PATH_INFO,在 location 段添加如下配置。

try_files : 配置laravel 项目时需要使用改配置;

  • try_files 指令也放在 server 或 location 上下文中。
  • try_files 指令的参数是 一个或多个文件或目录的列表以及最后面的 URI 参数
  • Nginx 会按顺序检查文件及目录是否存在(根据 root 和 alias 指令设置的参数构造完整的文件路径),并用找到的第一个文件提供服务。在元素名后面添加斜杠 / 表示这个是目录。如果文件和目录都不存在,Nginx 会执行内部重定向,跳转到命令的最后一个 uri 参数定义的 URI 中。
  • 要想 try_files 指令工作,必须定义一个 location 块捕捉内部重定向。最后一个参数可以是命名过的 location,由初始符号(@)指示。
  • try_files 指令通常使用 $uri 变量,表示 URL 中域名之后的部分。

Nginx 动静分离和反向代理

  • 动静分离
    • 用nginx 做反向代理使用 poxy_pass
    • 以反向代理为例,nginx 不自己处理一些图片资源,而是把图片的请求转发给另一台机器进行处理

可以通过代理服务器使用设置头信息字段,把用户真正的IPIP传到后台服务器去.

反向代理+负载均衡

  • 在nginx中做集群与负载均衡,步骤都是一样的 Upstream {} 模块 把多台服务器加入到一个组, 然后 memcached_passfastcgi_passproxy_pass ==> upstream 组

具体配置步骤:

  • 1:配置 upstream

  • 2: 下游调用

 

 

 

« »

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *