nginx:
webserver,负载均衡,代理服务器
固态盘(闪盘):用于系统盘
sas:磁盘阵列(READ1,5,0)
多路复用:
当一个请求的资源过多时,该请求会进入等待状态,该worker进程会继续处理下一个请求,直到该请求的到结果
多路复用的具体方法:
select:线程不安全,最多只检测1024个url,不会给返回参数作标记不方便查找
poll:线程不安全
epoll:杜绝了select和poll的大部分问题
监控nginx的工作状态
location /nginx-status {
stub_status on;
access_log /var/log/nginx/nginxstatus.log; #设置日志文件的位置
auth_basic "nginx-status"; #指定认证机制(与location后面的内容相同即可)
auth_basic_user_file /etc/nginx/htpasswd;
}
htpasswd -c -m /etc/nginx/htpasswd lys
-c #创建用户
-m #密码使用md5加密
nginx-status:
active connections – 活跃的连接数量
server accepts handled requests — 总共处理了11989个连接 , 成功创建11989次握手, 总共处理了11991个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.
1)nginx启动时,会生成两种类型的进程,一个是主进程(Master),一个(windows版本的目前只
有一个)或多个工作进程(Worker)。主进程并不处理网络请求,主要负责调度工作进程,也就是图
示的三项:加载配置、启动工作进程及非停升级。所以,nginx启动以后,查看操作系统的进程列表,
我们就能看到至少有两个nginx进程。
2)服务器实际处理网络请求及响应的是工作进程(worker),在类unix系统上,nginx可以配置多个
worker,而每个worker进程都可以同时处理数以千计的网络请求。
3)模块化设计。nginx的worker,包括核心和功能性模块,核心模块负责维持一个运行循环(run-
loop),执行网络请求处理的不同阶段的模块功能,如网络读写、存储读写、内容传输、外出过滤,以
及将请求发往上游服务器等。而其代码的模块化设计,也使得我们可以根据需要对功能模块进行适当的选择和修改,编译成具有特定功能的服务器。
4)事件驱动、异步及非阻塞,可以说是nginx得以获得高并发、高性能的关键因素,同时也得益于对
Linux、Solaris及类BSD等操作系统内核中事件通知及I/O性能增强功能的采用,如kqueue、epoll及event ports。
5)代理(proxy)设计,可以说是nginx深入骨髓的设计,无论是对于HTTP,还是对于FastCGI、
memcache、Redis等的网络请求或响应,本质上都采用了代理机制。所以,nginx天生就是高性能的代理服务器
nginx -s stop 快速停止nginx
nginx -t 检查当前配置文件是否有错误
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer"''"$http_user_agent" "$http_x_forwarded_for"';
nginx变量含义.png
location配置:
使用 root ,实际的路径就是:root值 + location值。
使用 alias ,实际的路径就是:alias值。
虚拟主机
使得一台nginx服务器提供多项服务
1.基于域名的虚拟主机
2.基于ip的虚拟主机
3.基于端口的虚拟主机
1.基于域名的虚拟主机
在conf.d中建立文件yuming.conf
server {
listen 80;
server_name www.1000phone01.com;
root /usr/share/nginx/yuming;
access_log /var/logs/www.1000phone01.com.log main;
error_log
/var/logs/www.1000phone01.com.error.log;
location / {
index index.html index.htm;
}
}
在/etc/hosts/中建立主机名映射
在/usr/share/nginx/建立yuming目录
echo "yuming1" > yuming/index.html
systemctl reload nginx
2.基于ip的虚拟主机
一个网卡绑定多个ip
ifconfig eth0:1 192.168.1.101
(取向ip绑定 ifconfig eth0:1 192.168.1.101 down)
在conf.d中建立文件iptest.conf
server {
listen 192.168.1.101:80;
root /usr/share/nginx/iptest;
access_log /var/logs/www.1000phone01.com.log main;
error_log
/var/logs/www.1000phone01.com.error.log;
location / {
index index.html index.htm;
}
}
在/usr/share/nginx/建立iptest目录
echo "iptest" > iptest/index.html
systemctl reload nginx
3.基于端口的虚拟主机
在conf.d中建立文件port.conf
server {
listen 8000;
server_name www.port1.com;
root /usr/share/nginx/port1;
access_log /var/log/www.port1.com.log main;
error_log /var/log/www.port1.com.error.log;
location / {
index index.html;
}
}
在/usr/share/nginx/建立port目录
echo "porttest" > port/index.html
systemctl reload nginx
代理
正向代理
反向代理
正向代理:nginx服务器代替主机发送请求,以访问其他的服务器,
反向代理:nginx服务器代替webserver接受请求,用户只能访问到nginx的ip地址
keepalives:
守护进程,定时广播
vip(虚拟ip)
master,backup
master:主服务器,定时广播,没有发生故障
backup:接受广播,若没发生故障,就静默,若发生故障,就是使用vip,这样会保证负载均衡的实现
- HTTP Server和Application Server的区别和联系
Apache/nignx是静态服务器(HTTP Server):
Nginx优点:负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于apache;
Apache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解
析,适合静态HTML、图片等。
HTTP Server 关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代
理、负载均衡等功能
HTTP Server(Nginx/Apache)常用做静态内容服务和代理服务器,将外来请求转发给后面的应
用服务(tomcat,jboss,jetty等)。应用服务器(tomcat/jboss/jetty)是动态服务器(Application Server):
应用服务器Application Server,则是一个应用执行的容器。它首先需要支持开发语言的
Runtime(对于 Tomcat 来说,就是 Java,若是Ruby/Python 等其他语言开发的应用也无法直接
运行在 Tomcat 上)。 - 但是事无绝对,为了方便,应用服务器(如tomcat)往往也会集成 HTTP Server 的功能,nginx也可
以通过模块开发来提供应用功能,只是不如专业的 HTTP Server 那么强大,所以应用服务器往往
是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP
Server 分发到客户端。 - 常用开源集群软件有:lvs,keepalived,haproxy,nginx,apache,heartbeat
常用商业集群硬件有:F5, Netscaler,Radware,A10等
网友评论