肥乡企业做网站推广,上海临时工400元一天,.net开发的网站 能做成app吗,网站设计网页配色Nginx简介
1.1概述 Nginx是一个高性能的HTTP和反向代理服务器。 是一款轻量级的高性能的web服务器/反向代理服务器/电子邮件#xff08;IMAP/POP3#xff09;代理服务器 单台物理服务器可支持30 000#xff5e;50 000个并发请求。
1.2Nginx和Apache的优缺点
#xff…Nginx简介
1.1概述 Nginx是一个高性能的HTTP和反向代理服务器。 是一款轻量级的高性能的web服务器/反向代理服务器/电子邮件IMAP/POP3代理服务器 单台物理服务器可支持30 00050 000个并发请求。
1.2Nginx和Apache的优缺点
1nginx相对于apache的优点∶
轻量级同样起web服务,比apache占用更少的内存及资源
抗并发nginx处理请求是异步非阻塞的而apache是阻塞型的在高并发下nginx能保持低资源低消耗高性能
高度模块化的设计编写模块相对简
2apache相对于nginx的优点∶
Rewrite比nginx的rewrite强大 rewrite的主要功能就是实现统一资源定位符URL的跳转
模块多基本想到的都可以找到
少bug nginx的bug相对较多
超稳定
存在的理由一般来说需要性能的web服务用nginx。若不需要性能只求稳定就选用apache
1.3Nginx作为web服务器与Apache比较
相比apachenginx使用更少的资源支持更多的并发连接体现更高的效率。
Nginx作为负载均衡服务器nginx既可以在内部直接支持rails和php程序对外进行服务也可以支持http代理服务器对外进行服务。
Nginx采用C进行编写不论是系统资源开销还是CPU使用效率都比较好。
作为邮件代理服务器最早开发这个产品的目的之一也是作为邮件代理服务器。
apache是同步多进程模型一个连接对应一个进程nginx是异步的多个连接可以对应一个进程。
Nginx处理静态文件好耗费内存少只适合静态和反向。
Apache在处理动态有优势
nginx并发性比较好CPU占用内存低如果rewrite频繁选用apache最佳。
总的来说apache依然是大部分公司的首选。
1.4nginx的工作原理
内核和模块的组成
·Nginx 本身做的工作实际很少当它接到一个 HTTP 请求时 它仅仅是通过查找配置文件将此次请求映射到一个 location block而此 location 中所配 置的各个指令则会启动不同的模块去完成工作因此模块可以看做 Nginx 真正的劳动工作者。 ·通常一个 location 中的指令会涉及一个 handler 模块和多个 filter 模块当然多个 location 可以复用同一个模块。handler 模块负责处理请求完成响应内容的生成而 filter 模块对响应内容进行处理。 用户根据自己的需要所开发的模块都属于第三方模块。正是有了这么多模块的支撑 Nginx 的功能才会如此强大。
分为三种模块
·核心模块HTTP 模块、EVENT 模块和 MAIL 模块 ·基础模块HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块 ·第三方模块HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模 块。
nginx的模块从功能
Handlers处理器模块 此类模块直接处理请求并进行输出内容和修改 headers 信息等操作。Handlers 处理器模块一般只能有一个
Filters过滤器模块 此类模块主要对其他处理器模块输出的内容进行修改操作最后由 Nginx 输出
Proxies代理类模块 此类模块是 Nginx 的 HTTP Upstream 之类的模块这些模块主要与后端一些服务比如 FastCGI 等进行交互实现服务代理和负载均衡等功能。
2 Nginx的编译安装
2.1关闭防火墙将安装nginx所需软件包传到/data目录下 2.2安装软件所需的依赖包
yum -y install pcre-devel zlib-devel openssl-devel gcc 2.3创建运行的用户、组Nginx 服务程序默认以 nobody 身份运行建议为其创建专门的用户账号以便更准确地控制其访问权限
useradd -M -s /sbin/nologin nginx 2.4编译安装nginx
cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/
cd nginx-1.12.0/
./configure \
--prefix/usr/local/nginx \ #指定nginx的安装路径
--usernginx \ #指定用户名
--groupnginx \ #指定组名
--with-http_stub_status_module #启用 http_stub_status_module 模块以支持状态统计
make make install 3 Nginx的配置
3.1nginx的配置文件
vim /usr/local/nginx/sbin/nginx 3.2nginx服务基本应用
nginx -t 检查配置文件是否配置正确
开启nginx
停止cat /usr/local/nginx/logs/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 -USR2 PID号
tar -zxvf nginx-1.xx.xx.tar.gz
cd nginx-1.xx.xx
./configure \
--prefix/usr/local/nginx \
--usernginx \
--groupnginx \
--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 #要保证当前 nginx 进程是通过 /usr/local/nginx/sbin/nginx 启动的而不是通过查找环境变量中那个 nginx 命令启动的
或者先 killall nginx 再/usr/local/nginx/sbin/nginx
3.3添加nginx系统服务
vim /etc/init.d/nginx 给文件添加执行权限、添加为系统服务、启动nginx服务 方法2
vim /lib/systemd/system/nginx.service 添加权限并启动服务 4 Nginx服务的主配置
4.1nginx服务的主配置文件
vim /usr/local/nginx/conf/nginx.conf
1、全局块全局配置对全局生效 2、events块配置影响 Nginx 服务器与用户的网络连接 3、http块配置代理缓存日志定义等绝大多数功能和第三方模块的配置 4、server块配置虚拟主机的相关参数一个 http 块中可以有多个 server 块 5、location块用于配置匹配的 uri 6、upstream配置后端服务器具体地址负载均衡配置不可或缺的部分。
4.2nginx的全局配置 4.3I/O事件配置 如果需要提高每个进程的链接数还需要执行ulimit -n 65535 命令临时修改本地的每个进程可以同时打开的最大文件数量。
永久修改本地的每个进程可以同时打开的最大文件数量/etc/security/limits.conf 可以使用ulimit -a查看系统允许当前用户打开的文件数限制
在linux平台上在进行高并发tcp连接处理室最高的并发数量都要受到系统对用户单一进程同时可额打开的文件数量做限制这是因为系统的每个tcp连接都要创建一个socket句柄每个socket句柄同时也是一个文件句柄
epoll时linux系统内核为处理大批句柄二改进的poll是linux下多路复用IO接口select/poll的增强版本阿能显著的减少程序在大并发连接中只有少量的活跃的情况下的cpu系统利用率。
work_rpocesses的值和work_connections的值决定了最大并发数量最大并发数的计算方式为worker_processes*worker_connections。但在反向代理场景中计算方法不同因为nginx机要维持和客户端的连接又要维持后后端服务器端连接因此处理一次连接要占用两个连接
所以最大并发数计算方式为:worker_processes*worker_connections/2。
4.4HTTP配置 4.5日志格式设定
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址 $remote_user用来记录客户端用户名称 $time_local 用来记录访问时间与时区 $request 用来记录请求的url与http协议 $status 用来记录请求状态成功是200 $body_bytes_sent 记录发送给客户端文件主体内容大小 $http_referer用来记录从哪个页面链接访问过来的 $http_user_agent记录客户浏览器的相关信息
通常web服务器放在反向代理的后面这样就不能获取到客户的IP地址了通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中可以增加x_forwarded_for信息用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
location常见配置指令root、alias、proxy_pass root根路径配置root /var/www/html 请求www.kgc.com/test/1.html会返回文件/var/www/html/test/1.html
alias别名配置alias /var/www/html 请求www.kgc.com/test/1.html会返回文件/var/www/html/1.html
proxy_pass反向代理配置
4.6访问状态统计配置
1.先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块
--with-http_stub_status_module
cat /opt/nginx-1.12.0/auto/options | grep YES #可查看 nginx 已安装的所有模块 2.修改 nginx.conf 配置文件指定访问位置并添加 stub_status 配置 3.重启服务访问测试 4.7基于客户端的访问控制
访问控制规则如下
deny IP/IP 段拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行如匹配则停止不再往下匹配。
修改nginx配置文件 4.8基于域名的nginx的虚拟主机
1.为虚拟主机提供域名解析 2.为虚拟主机准备网页文档 3.修改nginx的配置文件 4.重启服务访问测试 4.9基于IP的nginx虚拟主机
1.修改nginx配置文件为不同主机地址 2.临时设置一个网卡用作实验并重启服务测试 4.10基于端口的nginx虚拟主机
1.vim /usr/local/nginx/conf/nginx.conf修改配置文件端口号 2.重启网卡并测试