Nginx是什么?

Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。

我们为什么使用nginx

1.高性能、高并发

在所有的web服务器里面,nginx处理数据最快,响应最快

2.轻量且高扩展性

他只加载核心业务的模块,它可以随时添加模块,并且兼容第三方模块

3.可靠性高

一般web服务总是跑一段时间之后需要重启,一般是半年左右

nginx不需要重启,宕机级别是9999/99999

4.热扩展

nginx启动的时候会启动一个master管理进程和多个worker业务进程

可以在开机状态进行升级或添加模块

5.企业都是用nginx

1.Nginx技术成熟,具备的功能是企业最常使用而且最需要的

2.适合当前主流架构趋势,微服务、云架构、中间层

3.统一技术栈,降低维护成本, 降低技术更新成本。

6.Nginx采用Epoll网络模型,Apache采用Select模型

Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。

Epoll: 当用户发起请求,epoll模型会直接进行处理,效率高效,并无连接限制。

其他的web服务

nginx

tengine:                淘宝网基于nginx开发后的产物

openresty:            OpenResty是一个基于 [Nginx](http://openresty.org/cn/nginx.html) 与 Lua 的高性能 Web 平台

Apache 早期:性能低、用的少、上手难

lighttpd 具有非常低的内存开销、cpu占用率低、效能好以及丰富的模块等特点

IIS windows下的web服务

GWS google web server

BWS baidu web server

nginx应用场景

Nginx部署

1.官方源部署方式

http://nginx.org/en/linux_packages.html#RHEL-CentOS

1)配置官方源
[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2)安装依赖包(可以不操作)
[root@web01 ~]# yum install -y gcc gcc-c++ autoconf pcre pcre-devel make automake wget httpd-tools vim tree
3)yum安装nginx
[root@web01 ~]# yum install nginx
4)启停nginx
1.Nginx启动
[root@zls ~]# /usr/sbin/nginx
[root@zls ~]# systemctl start nginx

2.Nginx停止
[root@zls ~]# /usr/sbin/nginx -s stop
[root@zls ~]# systemctl stop nginx

3.Nginx重启
[root@zls ~]# systemctl restart nginx

4.Nginx重载
[root@zls ~]# /usr/sbin/nginx -s reload
[root@zls ~]# systemctl reload nginx
5)查看启动
[root@web01 ~]# systemctl status nginx

[root@web01 ~]# ps -ef | grep nginx

[root@web01 ~]# netstat -lntp

#访问页面查看

2.源码包安装方式(公司有自己的架构,参数,用户)

1)上传源码包
[root@web02 ~]# rz nginx-1.16.1.tar.gz
2)解压安装包
[root@web02 ~]# tar xf nginx-1.16.1.tar.gz
3)创建用户
[root@web02 ~]# groupadd www -g 666
[root@web02 ~]# useradd www -u 666 -g 666
4)安装依赖
[root@web02 ~]# yum install -y gcc gcc-c++ autoconf pcre pcre-devel make automake wget httpd-tools vim tree openssl openssl-devel zlib-devel
4)生成
[root@web02 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx-1.16.1 --user=www --group=www --with-http_addition_module --with-http_auth_request_module
5)编译安装
[root@web02 nginx-1.16.1]# make && make install
[root@web02 nginx-1.16.1]# ln -s /usr/local/nginx-1.16.1 /usr/local/nginx
6)启动
#使用system管理nginx
[root@web02 ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

[root@web02 local]# systemctl start nginx.service
3.epol源安装方式
1)安装
yum install -y nginx

Nginx相关文件

1.Nginx主配置文件

路径 类型 作用
/etc/nginx/nginx.conf 配置文件 nginx主配置文件
/etc/nginx/conf.d/default.conf 配置文件 默认网站配置文件

2.Nginx代理相关参数文件

路径 类型 作用
/etc/nginx/fastcgi_params 配置文件 Fastcgi代理配置文件
/etc/nginx/scgi_params 配置文件 scgi代理配置文件
/etc/nginx/uwsgi_params 配置文件 uwsgi代理配置文件

3.Nginx编码相关配置文件

路径 类型 作用
/etc/nginx/win-utf 配置文件 Nginx编码转换映射文件
/etc/nginx/koi-utf 配置文件 Nginx编码转换映射文件
/etc/nginx/koi-win 配置文件 Nginx编码转换映射文件
/etc/nginx/mime.types 配置文件 Content-Type与扩展名

4.Nginx管理相关命令

路径 类型 作用
/usr/sbin/nginx 命令 Nginx命令行管理终端工具
/usr/sbin/nginx-debug 命令 Nginx命令行与终端调试工具

4.Nginx日志相关目录与文件

路径 类型 作用
/var/log/nginx 目录 Nginx默认存放日志目录
/etc/logrotate.d/nginx 配置文件 Nginx默认的日志切割

Nginx配置文件

#--------------------------核心模块-----------------------------
#用户
user  nginx;
#工作进程
worker_processes  10;

#错误日志                        #debug/info/notice/warn/error/crit/alter/emerg
error_log  /var/log/nginx/error.log warn;
#pid文件
pid        /var/run/nginx.pid;

#--------------------------事件驱动模块模块------------------------
events {
    worker_connections  1024;
}

#---------------------------http内核模块-----------------------------
http {
    #nginx包含的文件类型
    include       /etc/nginx/mime.types;
    #nginx默认文件类型不识别的文件直接下载
    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  on;

    #使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)
    server {
        #监听端口, 默认80
        listen       80;
        #提供的域名
        server_name  driverzeng.com;    
        #控制网站访问路径
        location / {
            #存放网站源代码的位置
            root   /usr/share/nginx/html;
            #默认返回网站的文件
            index  index.html index.htm;
        }
    }
    ...
    #第二个虚拟主机配置
    'server' {
    ...
    }
    include /etc/nginx/conf.d/*.conf;  #包含/etc/nginx/conf.d/目录下所有以.conf结尾的文件

}
Copyright © 高程程 all right reserved,powered by Gitbook修订于: 2021-05-18 21:14:35

results matching ""

    No results matching ""