nginx介绍
nginx简述
Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。
开源: 直接获取源代码
高性能: 支持海量并发
可靠: 服务稳定
# 动态服务器(调用动态请求,调用数据库)
tomcat
resin
php
weblogic
jboss
# 静态服务器(没有办法直接连接数据库)
nginx
apache
iis
lighttpd
tengine
openresty-nginx
nginx和Apache区别
# 1.模型不一致
- nginx采用Epool网络模型,Apache采用Select模型
- select:每当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下
- Epool:每当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制
# 2.nginx的优点
- 轻量级,同样起web服务,比apache占用很少的资源
- 行并发,nginx处理请求是异步非阻塞,而apache则是非阻塞型,在高并发下nginx能保持低资源低消耗高性能
- 高度模块化的设计,编写模块相对简单,功能模块少
- 社区活跃,各种高性能模块出品迅速
- 代码模块化(易读,便于二次开发,对于开发人员非常友好)
- 互联网公司选择使用nginx
- 适合主流架构趋势,微服务,云架构,中间层
- 统一技术栈,降低维护成本,降低技术跟新成本
# 3.apache相对nginx的优点
- rewrite,比nginx的rewrite强大
- 模块超多,基本想到的都可以找到
- 少bug,nginx的bug相对较多
- 超稳定
# 4. 存在理由
一般来说,需要性能的web服务,用nginx,如果不需要性能只求稳定,那就用apache,后者的各种功能模块实现得比前者强,例如ssl的模块就比前者好,可配置项多。这里需要注意一点,epoll(freebsd上都是kqueue)网络IO模型是nginx处理性能高的根本理由,但并不是所有情况下epoll大获全胜,如果本身提供静态服务的就只有几个寥寥几个文件,apache的select模型或许比epoll更高性能,当然,这只是根据网络io模型的原理作的假设,真正的应用还需要实测了再说的。
nginx典型应用场景
nginx安装及参数
# nginx的安装方式
- 编译 (1.版本随意 2.安装复杂 3.升级繁琐 4.规范 5.便于管理)
- epel仓库 (1.版本较低 2.安装简单 3.配置不易读)
- 官方仓库 (1.版本较新 2.安装简单 3.配置易读)
# 所需依赖
[root@web ~]# yum install -y gcc gcc-c++ autoconf pcre pcre-devel make automake wget httpd-tools vim tree
# 官方yum源
[root@web ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
# nginx版本检查
nginx -v
# nginx编译参数
nginx -V
# 启停方式
- 启动
[root@zls ~]# /usr/sbin/nginx
[root@zls ~]# systemctl start nginx
- 停止
[root@zls ~]# /usr/sbin/nginx -s stop
[root@zls ~]# systemctl stop nginx
- 重启
[root@zls ~]# systemctl restart nginx
- 重载
[root@zls ~]# /usr/sbin/nginx -s reload
[root@zls ~]# systemctl reload nginx
nginx安装
-
1 .修改默认yum源为官方源TP
-
2.安装nginx
- 3.启动服务
nginx相关文件介绍
# rpm -ql 查看整体目录结构及对应功能
###############主配置文件
/etc/nginx/nginx.conf #主配置文件
/etc/nginx/conf.d/default.conf #默认网站配置文件
###############nginx代理相关参数文件
/etc/nginx/fastcgi_params #php代理文件
/etc/nginx/scgi_params #AJAX前后分离
/etc/nginx/uwsgi_params #Python代理文件
###############nginx编码相关参数文件
/etc/nginx/win-utf #Nginx编码转换映射文件
/etc/nginx/koi-utf #Nginx编码转换映射文件
/etc/nginx/koi-win #Nginx编码转换映射文件
###############浏览器支持的直接打开的文件格式
/etc/nginx/mime.types
###############nginx管理相关命令
/usr/sbin/nginx #Nginx命令行管理终端工具
/usr/sbin/nginx-debug #Nginx命令行与终端调试工具
###############nginx日志相关目录与文件
/var/log/nginx #Nginx默认存放日志目录
/etc/logrotate.d/nginx #Nginx默认的日志切割
nginx配置文件
# nginx配置文件模块
- 核心模块
- 事件驱动模块
- http内核模块(重点)
# 配置文件详解
[root@web02 /etc/nginx]# cat /etc/nginx/nginx.conf
################核心模块##########################
user nginx; # 启动nginx服务用户
worker_processes 1; # worcker进程数(可设为auto自动)
error_log /var/log/nginx/error.log warn; # 错误日志路径和级别
pid /var/run/nginx.pid; # pid文件路径
################事件驱动模块##########################
events {
worker_connections 1024; # 每个worker进程允许连接数
}
################http内核模块##########################
http {
include /etc/nginx/mime.types; # 包含指定文件内容,这里指浏览器允许访问文件类型
default_type application/octet-stream; # 浏览器不支持打开的内容,需要下载的内容
# 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 日志路径 和 指定格式
access_log /var/log/nginx/access.log main;
# 高效传输文件
sendfile on;
#tcp_nopush on;
# 长连接的超时时间
keepalive_timeout 65;
# 开启gzip压缩
#gzip on;
# 包含当前目录下所有以.conf结尾的文件
include /etc/nginx/conf.d/*.conf;
}