vlambda博客
学习文章列表

nginx基础介绍及问题排查

一、nginx简介

1.1 什么是nginx

      nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。  -- 百度百科

 

1.2 nginx 的特点

     优点:

     体积小、性能高  :  官方安装包不到1MB,安装完 6MB左右。采用C语言编写,异步I/O,同等资源下能更多并发

     配置清晰、简单:分段配置 层级关系明显

     缺点:

    对动态语言 如PHP支持不好

    rewrite 支持不好


1.3 nginx  在系统中的应用

     nginx 在系统中主要用来作为前端静态、和反向代理web服务器 

二、基于nginx配置

 2.1 nginx 的常用配置

   nginx 配置概览

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。


2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。


3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

5、server块:配置虚拟主机的相关参数,一个http中可以有多个server。


6、location块:配置请求的路由,以及各种页面的处理情况。


  

一、 全局块常用配置

     由于采用docker 部署,路径相对固定,因此不建议修改全局块与

路径 和 用户 相关的配置

      worker_processes  1;   # 工作进程数为1

      worker_processes  用于指定工作进程数。即woker 进程的数量。

      一般为 服务器cpu 核数 或 cpu 核数的整数倍

   

nginx基础介绍及问题排查

 二、  http块常用配置

nginx基础介绍及问题排查

client_max_body_size 2048m  # 客户端最大body 大小 为2048MB


client_max_body_size 用于控制文件上传大小的上限

三、  upstream 和 sever块常用配置

nginx基础介绍及问题排查

upstream 用于申明负载上游服务器及轮训策略, 默认为加权轮训

listen:监听的端口

server_name:域名,对于http请求头中的 HOST

四、location 块常用配置

nginx基础介绍及问题排查

location [匹配规则] uri {配置项}


root:静态资源根目录

index:默认首页

proxy_pass:  反向代理配置


 2.3 nginx 的日常维护

   由于使用docker 部署,nginx的启停等命令与其他docker部署的服务器 一致,如:

   启动nginx :  docker start  nginx容器名

   停止nginx:docker stop nginx 容器名

   重启nginx:docker restart nginx 容器名

   查看nginx运行状态: docker ps / docker ps –

注意事项:

     修改完配置文件一定要 重启nginx才能生效

     nginx –s  reload  不能加载到新的配置

三、nginx 问题排查

nginx 是一个相对成熟的产品,遇到其bug的概率很低,常见的问题有如下:

   1、配置文件错误 导致nginx 启动失败

    排查方法:docker logs --tail 20  registry-nginx0001   查看报错日志

nginx基础介绍及问题排查

  如图 :为配置文件第71行 报错。

2、端口被占用 启动失败

    排查方法:  netstat -lnpt

    查看系统中是否存在重复端口

3、文件权限不对 导致访问 403 报错

    排查方法:ls –l   查看文件权限是否高于  umask 022 权限

 修复方法:  在静态资源的目录下执行 

                       find -type d -exec chmod 755 {} \;

                       find –type  f –exec  chmod 644 {} \;