nginx_基础

nginx基础安装

1、关于nginx

nginx是异步框架的web服务器,作反向代理,负载均衡,缓存和动静分离。具有高并发,高性能,安全的特定

1.1、介绍

  • 高并发、高性能,一台服务器可以轻松处理上万的并发连接,一般单台服务器最多建议处理3万的并发;

  • 模块化设计,具有非常好的而扩展性,可以通过加载、卸载某个模块(注意:模块动态加载在nginx V1.9.11版本后才支持)以实现相应的功能;

  • 热部署、热更新,nginx支持配置文件的热更新,版本热升级、动态加载模块、日志热更换;

  • 内存低消耗, 10000个keep-alive连接模式下的非活动连接,仅仅消耗2.5M;

  • 配置、维护简单,nginx的配置非常简单

1.2、基本功能

  • web服务器 这是nginx最基本的功能,也是核心功能;

  • 反向代理服务器,nginx可以作为http协议的反向代理服务器,也是生产环境中最常见的功能之一;

  • FastCGI(php)、uWSGI(python)代理服务器, 生产环境上经常使用nginx作为客户端来请求后端应用服务(注意:此时nginx在用户看来依然是反向代理服务器,只不过这里代理的请求不再是http协议,而是跟后端服务相关的协议,比如后端如果是php语言开发的,则是FastCGI协议代理);

  • TCP/UDP代理服务器,也即“调度器”生产环境中,在一些并发量不大的情况下,有时候也会使用nginx作为四层调度器;

  • Mail 邮件代理服务器 可以作为邮件代理服务器,几乎不使用;

1.3、nginx基础架构

这里我们先不对nginx架构做态度介绍,后面有专门的文章进行深入分析,本章我们仅仅简单了解

如下图,nginx为master/workers结构,一个master主进程负责管理多个worker进程,worker进程是真正接收并处理用户请求的进程,总结就是,worker负责处理用户请求,而master则负责分析和管理配置文件、接收用户信号传递以及平滑升级、管理和维护worker进程等功能。另外,nginx具有强大的缓存功能,其中Cache Loader 负责载入缓存对象,Cache Manager 负责管理缓存对象。这两个默认是没有的,可以通过配置获取,进而减轻服务端的数据压力

 

nginx_基础_第1张图片

 

2、nginx安装和访问测试

先介绍yum安装方式,稍后再介绍编译安装。需要注意的是CentOS基础yum源中是没有nginx包的,我们需要添加好EPEL源,具体添加方式不再赘述,目前EPEL源中最新稳定版本是nginxV1.16.1。

2.1、安装

yum install nginx -Y
# 安装成功后执行:rpm -q --scripts nginx-filesystem
[root@iZbp167alda2e7mrljvtmtZ opt]# rpm -q --scripts nginx-filesystem
preinstall scriptlet (using /bin/sh):
getent group nginx > /dev/null || groupadd -r nginx
getent passwd nginx > /dev/null || \
    useradd -r -d /var/lib/nginx -g nginx \
    -s /sbin/nologin -c "Nginx web server" nginx
exit 0
# 可以发现,安装时脚本会自动生成分组,id
[root@iZbp167alda2e7mrljvtmtZ opt]# id nginx
uid=997(nginx) gid=993(nginx) groups=993(nginx)
​
# 查看nginx的包都在哪些目录下
rpm -ql nginx
[root@iZbp167alda2e7mrljvtmtZ opt]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
...
# 其中 /etc/logrotate.d/nginx是日志回滚配置文件,/usr/sbin/nginx比较重要,是nginx的主进程,/usr/lib64/nginx/modules里面是nginx扩展功能的文件,nginx对这些模块动态加载,/etc/nginx/下都是些nginx的配置信息,/usr/share/nginx/html/下是nginx目录,存储着加载的html等文件
​
# 启动:
[root@iZbp167alda2e7mrljvtmtZ opt]# nginx 或者systemctl start nginx
# 检查一下
[root@iZbp167alda2e7mrljvtmtZ opt]# ps -ef | grep nginx
​
# nginx -h 查看命令帮助
[root@iZbp167alda2e7mrljvtmtZ opt]# nginx -h
nginx version: nginx/1.16.1
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
​
Options:
  -?,-h         : this help
  -v            : show version and exit 
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/share/nginx/)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file
  
# -V show version and configure options then exit,(不包括动态的配置模块)
[root@iZbp167alda2e7mrljvtmtZ opt]# nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.1.1c FIPS  28 May 2019 (running with OpenSSL 1.1.1g FIPS  21 Apr 2020)
TLS SNI support enabled
configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-stream_ssl_preread_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'
​
# -t 测试配置文件的语法是不是正确的,默认检查/etc/nginx/nginx.conf
# 修改文件后一定要 -t 一下
[root@iZbp167alda2e7mrljvtmtZ opt]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# -s signal(stop(直接退出)、quit(优雅退出)、reopen(日志的重新启动)、reload(优雅重启))
# 优点:可以直接在线升级​

# -p prefix(指定home目录,默认/usr/share/nginx)
# -c filename(设置配置文件的路径,默认/usr/nginx/nginx.conf)
# -g directives(用于指定指令,该指令高于配置文件中的设置。如 nginx -g 'daemon off;',意为将nginx设置为前台运行)

 

 

 

 

你可能感兴趣的:(中间件)