Nginx服务的配置与应用


Nginx功能特性

1. 提供web服务
2. 作为反向代理服务器和负载均衡器
3. nginx缓存服务


Nginx作为web服务器的特点和优势

  1. 支持高并发:能支持上万并发连接(尤其是静态文件业务环境)
  2. 资源消耗少:与其他web服务如Apache等相比在同等量的并发连接下,nginx消耗的内存要小很多。(也就是轻量级)
  3. 支持异步网络I/O模型epoll

Nginx相对其他服务的优缺点

Nginx

  1. 基于异步网络I/O模 型
  2. 具备支持高性能,高并发的特性
  3. 不支持类似 Apache的DSO模式、扩展库必须编译进主程序(缺点)
  4. 进程占用系统资源比较低
    Apache
  5. 支持扩展库,可通过DSO、apxs方法编译安装额外的插件功能,不需要重新编译Apache
  6. 更稳定,更安全
  7. 基于传统的select模型,高并发能力有限(缺点)
  8. 高并发时消耗系统资源相对多一些。(缺点)

Nginx I/O多路复用

1.

传统的多进程并发模型 (每进来一个新的I/O流会分配一个新的进程管理。)

2.
第二种方法就是I/O多路复用 (单个线程,通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流 。) I/O multiplexing 这里面的 multiplexing 指的其实是在单个线程通过记录跟踪每一个Sock(I/O流)的状态来同时管理多个I/O流。发明它的原因,是尽量多的提高服务器的吞吐能力。
在同一个线程里面, 通过拨开关的方式,来同时传输多个I/O流。
Nginx使用epoll接收请求的过程

ngnix会有很多连接进来, epoll会把他们都监视起来,然后像拨开关一样,谁有数据就拨向谁,然后调用相
应的代码处理。

epoll

epoll 可以说是I/O 多路复用最新的一个实现,epoll 修复了select/poll绝大部分问题, 比如:
epoll 线程安全的。
epoll 告诉你具体哪个sock有数据,你不用自己去找了。

异步,非阻塞

每进来一个request,会有一个worker进程去处理。但不是全程的

处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向

后端服务器转发request,并等待请求返回。那么,这个处理的

worker不会这么一直等着,他会在发送完请求后,注册一个事

件:“如果upstream返回了,告诉我一声,我再接着干”。于是他

就休息去了。这就是异步。此时,如果再有request 进来,他就

可以很快再按这种方式处理。这就是非阻塞和IO多路复用。而一

旦上游服务器返回了,就会触发这个事件,worker才会来接手,

这个request才会接着往下走。这就是异步回调。


Nginx - yum 安装部署

首次安装可以按照以下步骤操作,非首次安装需要清理环境.

[root@wxm /]# cd /etc/yum.repos.d/  #配置yum源
[root@wxm yum.repos.d]# vim nginx.repo #vim创建并编辑这个nginx.repo文件
#   将下列配置复制粘贴到nginx.repo文件
[nginx-stable]

name=nginx stable repo

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

gpgcheck=1

enabled=1

gpgkey=https://nginx.org/keys/nginx_signing.key

module_hotfixes=true

[root@wxm yum.repos.d]# yum -y install nginx  #配置好yum源就可以用yum直接下载nginx了

启动nginx

[root@wxm yum.repos.d]# systemctl stop firewalld  #关闭防火墙
[root@wxm yum.repos.d]# setenforce 0   # 关闭selinux防火墙
[root@wxm yum.repos.d]# nginx            #启动nginx  

---- nginx -v 查看nginx版本信息
---- nginx -V 查看nginx已编译模块


yum 安装还有一种简便的方法:

yum -y install epel-release #先下载epel源
#  注意:只有下载了epel源之后才能下载nginx,
#       因为epel源里有nginx的packages。
yum -y install nginx  #下载完epel源后就可以直接下载nginx了

Nginx 源码安装部署

  1. 安装编译环境和一些必要的模块包
yum -y install gcc gcc-c++            #安装编译环境
yum install -y pcre pcre-devel          #安装pcre软件包(使nginx支持http rewrite模块)
yum install -y openssl openssl-devel      #安装openssl-devel(使nginx支持ssl)
yum install -y zlib zlib-devel   #安装zlib

useradd nginx          #为nginx创建一个用户,用于在nginx启动之后以此用户的身份运行,可在nginx的主配置文件中进行修改。


2.安装nginx
安装前需要去nginx官网下载合适的源码版本:www.nginx.org
这里以nginx-1.16.0版本为例

wget http://nginx.org/download/nginx-1.16.0.tar.gz #下载源码包,也可以下载到本地再上传到服务器

tar xzf nginx-1.16.0.tar.gz -C /usr/local/  #解压并指定解压到哪个目录

cd /usr/local/nginx-1.16.0/   #cd到解压后的目录


#编译 & 安装
./configure    --prefix=/etc/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 --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

make && make install  #如果是个平滑升级或者增加模块则不需要安装即不需要make install


nginx模块参数及其功能

文章链接 :点击跳转


nginx 配置文件详解

文章链接 :点击跳转


启动Nginx服务

  1. 首先为了方便可以先给/usr/local/ngin/sbin/ngin 做个软链接
ln -s /usr/local/nginx/sbin/nginx  /usr/sbin/nginx

之后就可以直接用nginx命令进行操作

  1. nginx相关命令
nginx -c 配置文件路径  #指定该特定配置文件启动nginx

nginx -s stop  #停止nginx服务

nginx -s reload  #重新加载配置文件

nginx  -t  #检查配置文件是否正确

nginx -t -c 配置文件路径  #检查该特定的配置文件是否正确

systemctl start nginx #启动nginx并设置为开机自启

Nginx日志

nginx 日志文件分为 log_format 和 access_log 两部分

log_format 定义了日志文件显示的样式和具体显示哪些参数,在配置文件中的格式如下:

log_format main 'remote_addr - remote_user [time_local]     "request" '
                'status body_bytes_sent "$http_referer" '
                '"http_user_agent" "http_x_forwarded_for"';

log_format 中参数变量及其说明如下:

变量说明
http_x_forwarded_for客户端的ip
$remote_user客户端的名称
$time_local访问时的本地时间
$request请求的url和http协议
$status访问的状态码
$body_bytes_sent发送给客户端的主题内容大小
$http_referer记录客户端是从哪个页面链接访问过来的,如果没有则是‘-’
$http_user_agent记录客户端使用的浏览器的相关信息

Nginx的虚拟主机配置

nginx虚拟主机的含义:


虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计

算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www

服务,这样就可以实现一台主机对外提供多个web服务,每个虚

拟主机之间是独立的,互不影响。


nginx虚拟主机的配置(三种):


nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置。

  • 基于域名的虚拟主机 (server_name来区分虚拟主机——应用:外部网站)
  • 基于ip的虚拟主机, (一块主机绑定多个ip地址)
  • 基于端口的虚拟主机(端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台)

注: 收集整理不易,转载请注明出处,欢迎批评指正。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值