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 核数的整数倍
二、 http块常用配置
client_max_body_size 2048m # 客户端最大body 大小 为2048MB
client_max_body_size 用于控制文件上传大小的上限
三、 upstream 和 sever块常用配置
upstream 用于申明负载上游服务器及轮训策略, 默认为加权轮训
listen:监听的端口
server_name:域名,对于http请求头中的 HOST
四、location 块常用配置
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 查看报错日志
如图 :为配置文件第71行 报错。
2、端口被占用 启动失败
排查方法: netstat -lnpt
查看系统中是否存在重复端口
3、文件权限不对 导致访问 403 报错
排查方法:ls –l 查看文件权限是否高于 umask 022 权限
修复方法: 在静态资源的目录下执行
find -type d -exec chmod 755 {} \;
find –type f –exec chmod 644 {} \;