第二阶段Nginx网站服务

Nginx服务基础 Nginx访问控制 Nginx虚拟主机 LNMP架构部署及应用

关于Nginx

一款高性能、 轻量级Web服务软件 ●稳定性高 ●系统资源消耗低 ●对HTTP并发连接的处理能力高 ◆单台物理服务器可支持30 000 ~ 50 000个并发请求

Nginx相对于Apache的优点: 轻量级,同样是web服务,比Apache占用更少的内存及资源:高并发,Nginx 处理请求是异步非塞的,而Apache 则是阻塞型的,在高并发下Nginx能保持低资源低消耗高性能;高度模块化的设计 编写模块相对简单;社区活跃,各种高性能模块出品迅速。 Apache相对于Nginx的优点: rewrite,比Nginx 的rewrite强大;模块超多,基本想到的都可以找到;少bug,Nginx 的bug相对较多;超稳定 存在就是理由,-般来说,需要性能的web服务,用Nginx。如果不需要性能只求稳定,那就Apache. Nginx处理动态请求是弱项,-般动态请求要Apache去做,Nginx只适处理静态网页或反向代理。

简述Nginx和Apache的差异? ●Nginx是一 个甚于事件的Web服务器,Apache是一 个甚于流程的服务器; ●Nginx所有请求都由一 个线程处理,Apache单个线程处理单个请求; ●Nginx避免子进程的概念,Apache是基于子进程的; ●Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面- -般; ●Nginx的性能和可伸缩性不依赖于硬件, Apache依赖于CPU和内存等硬件; ●Nginx支持热部署,Apache不支持热部署; ●Nginx对于静态文件处理具有更高效率, Apache相对- 般; ●Nginx在反向代理场景具有明显优势, Apache相对- -般。

--------编译安装Nginx服务-------- 1.关闭防火墙,将安装nginx所需软件包传到/opt目录下 systemctl stop firewalld systemctl disable firewalld setenforce 0 nginx- 1.12.0.tar.gz 2.安装依赖包 #nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。 yum -y install pcre-devel zlib-devel gcc gcc-c++ make

3.创建运行用户、组(Nginx 服务程序默认以nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限) useradd -M -s /sbin/nologin nginx

4.编译安装Nginx cd /opt tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/ . /configure
--prefix=/usr/1ocal/nginx \ #指定nginx的安装路径

--user=nginx \ #指定用户名 --group=nginx #指定组名. --with-http_ stub_ status_ module #启用http_ stub_ status_ module 模块以支持状态统计 make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #让系统识别nginx的操作命令

5.检查、启动、重启、停止nginx服务 nginx -t #检查配置文件是否配置正确 #启动 nginx #停止

cat /usr/1ocal/nginx/ logs/nginx. pid #先查看nginx的PID号 kill -3 <PID号> kill -s QUIT <PID号> killall -3 nginx killall -s QUIT nginx #重载

kill -1 <PID号> kill -s HUP <PID号> killall -1 nginx killall -s HUP nginx #日志分割,重新打开日志文件 kill -USR1 <PID号> #平滑升级 kill -USR2 <PID号>

新版本升级: tar -Zxvf nginx-1.xx.xx.tar.gz cd nginx-1.xx.xx . ./configure
--prefix=/usr/local/nginx
--user=nginx
--group=nginx
--with-http_ stub_ status_ module
--with-http_ ssl_ module

make mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_ old cp objs/nginx /usr/local/nginx/ sbin/nginx make upgrade #或者先killall nginx ,再/usr/1ocal/nginx/sbin/nginx

认识Nginx服务的主配置文件nginx. conf

1、全局块:配置影响nginx全局的指令。一般 有运行nginx服务器的用户组,nginx进 程pid存放路径,日志存放路径,配置文件引入,允许生成worker. process数等。 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。 3、http块: 可以嵌套多个server, 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义, 日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。 4、server块:配置虚拟主机的相关参数,一个http中可以有 多个server. 5、location块: 配置请求的路由,以及各种页面的处理情况。

vim /usr/1ocal/nginx/ conf/nginx . conf 1.全局配置 #user nobody; #运行用户,若编译时未指定则默认为nobody worker_ processes 1 #工作进程数量,可配置成服务器内核数★2, 如果网站访问量不大,- - 般设为1就够用了 #error_ _log 1ogs/error.log; #错误日志文件的位置 #pid logs/nginx.pid; . #PID文件的位置

2.I/O事件配置 events{ use epoll; #使用epoll 模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能 worker_ connections 4096; #每个进程处理4096 个连接

}

#如提高每个进程的连接数还需执行“ulimit-n65535”命令临时修改本地每个进程可以同时打开的最大文件数。 #在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单--进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一- 个socket句柄,每个socket句柄同时也是一个 文件句柄)。 #可使用ulimit-a命令查看系统允许当前用户进程打开的文件数限制。 #epoll是Linux内核为处理大批句柄而作改进的poll,是Linux 下多路复用IO接口select/pol1的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。

-----基于授权的访问控-------- 1.生成用户密码认证文件 yum install -y httpd-tools htpasswd -C /usr/local/ nginx/passwd. db zhangsan chown nginx /usr/ local/nginx/ passwd. db chmod 400 /usr/local/ nginx/passwd . db

2.修改主配置文件相对应目录,添加认证配置项 vim /usr/local/ nginx/conf /nginx. conf

.......

server { location / { ##添加认证配置## auth_ basic "secret"; #设置密码提示框文字信息 auth_ basic_ user file /usr/local/nginx/ passwd. db; }

}

3.重启服务,访问测试 nginx -t systemctl restart nginx

浏览器访问http://192.168.80.10

基于客户端的访问控制 访问控制规则如下: deny IP/IP段:拒绝某个IP或IP段的客户端访问。 allow IP/IP 段:允许某个IP或IP段的客户端访问。 规则从.上往下执行,如匹配则停止,不再往下匹配。

vim /usr/1ocal/nginx/conf/nginx . conf

......

server { location / { ##添加控制规则## allow 192.168.80.200; #允许访问的客户端IP deny all; #拒绝其它IP客户端访问 } }

systemctl restart nginx

基于域名的Nginx 虚拟主机 1.为虚拟主机提供域名解析 echo "192.168.80.10 www. kgc. com www. benet. com" >> /etc/hosts

2.为虚拟主机准备网页文档 mkdir -P /var/ www/html /benet mkdir -p /var/www/html/kgc echo "www. kgc . com" > /var/www/html/ kgc/ index . html echo "www . benet .com" > /var/www/html /benet/ index . html

3.修改Nginx的配置文件 vim /usr/local/nginx/conf/nginx. conf http { ...... server { listen 80; server_ name www . kgc . com; #设置域名www. kgc. com charset utf-8; access_ 1og logs/ WWw. kgc . access.log; #设置日志名 location / { root /var/www/html/kgc; #设置www. kgc.com的工作目录 index index. html index. php;

}

error_ page 500 502 503 504 /50x .html; location = 50x. html{ root html; }

}