1、ps -ef|grep nginx
查看 nginx 的目录
2、Nginx是一个http服务器,是一个使用c语言开发的高性能的http服务器及反向代理服务器。
Nginx是一个高性能的http和方向代理的service(服务器),也是一个IMAP/POP3/SMTP代理server
Nginx相较于Apache\lighttpd具有占用的内存小、稳定性高等优势,并发能力强。丰富的模块库存以及友好灵活的配置而闻名。
代理service
是介于浏览器和web服务器之间的一台服务器,其功能是代理网络用户去取得网络信息。网络信息则是通过代理服务器进行中转的
Nginx是一种反向代理服务器软件,在代理服务器接受客户端的请求后,然后把请求分发给具体的服务器进行处理,然后再将服务器响应结果反馈给客户端。
Nginx是以多进程的方式来工作的。
3、指令
到 nginx 目录下sbin目录下
启动nginx: ./nginx
查看nginx的运行状态: ps aux | grep nginx
查看nginx是否启动好 直接在网址上输入ip就可以 默认的端口号为80
停止nginx: ./nginx -s stop
查看版本: ./nginx -V
4、nginx基本配置与参数说明
#运行用户
user nobody;
#启动进程,通常设置成和cpu数量相同
woker_processes 3;
#全局错误日志及PID文件
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
#工作模式及连接上限
events {
#epoll是多路复用IO(I/O Multiplexing)中的一种方式
use epoll;
#单个后台的worker process进程的最大并发连接数
worker_connections 1024;
#总并发数是 worker_process 和 worker_connections的乘积
#即 max_clients = worker_process * worker_connections的乘积
#在设置了方向代理的情况下,max_clients = worker_process * worker_connections/4
#为什么上面的反向代理要除以4,应该说是一个经验值
#根据以上条件,正常情况下Nginx Server可以应付的最大连接数为:4*8000 = 32000
#worker_connections值的设置跟物理内存大小相关
#因为并发受IO约束,max_clients的值必须小于系统可以打开的最大文件数
#而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右
# $ cat /proc/sys/fs/file-max
# 输出 34336
# 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
# 所以,worker_connections 的值需要根据worker_processes 进程数目和系统可以打开的最大文件总数进程
# 使得并发总数小于操作系统可以打开的最大文件数目
# 其实质也就是根据主机的物理CPU和内存进行配置
# 当然,理论上的并发总数可能和实际有所偏差,因为主机还有其他的工作进程需要消耗资源。
}
#设置http服务器,利用它的反向代理功能提供负载均衡支持
http{
#设置mime类型,类型由mime.type 文件定义
include mine.types;
default_type application/octet-stream;
#设置日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
#sendfile 指令指定 nginx 是否调用sendfile 函数(zero copy方式)来输出文件
#对于普通的应用,必须设为on
#如果用来进行下载等应用磁盘IO负载应用,可设置为off,
#以平衡磁盘与网络I/O处理速度,降低系统的uptime
sendfile on;
#tcp_nopush on;
#链接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
#编码格式
charset utf-8;
#开启gzip压缩
gzip on;
gzip_disable "MSIE [1-6].";
#设置虚拟主机配置
server{
#监听80接口
listen 80;
#定义使用www.nginx.cn访问
server_name www.nginx.cn
#定义服务器的默认网站根目录位置
#root html; ----------基本不用,注释起来
#设定本虚拟主机的访问日志
#access_log logs/nginx.access.log main; ----------基本不用,注释起来
}
}
location ~*.\.(html|js|css|png|gif|jpg)$ {
root /opt/tomcat/apache-tomcat-7.0.69/webapps/ROOT/WEB-INF/resources;
}
5、 nginx upstream 的五种分配方式
nginx 负载均衡upstream用法举例
a、轮询(weight=1)
默认选项,当weight不指定时,各服务器weight相同,
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream bakend {
server 192.168.1.10;
server 192.168.1.11;
}
b、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
upstream bakend {
server 192.168.1.10 weight=1;
server 192.168.1.11 weight=2; //访问次数多
}
c、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。
如果后端服务器down掉,要手工down掉
upstream resinserver{
ip_hash;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
d、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backend {
server server1;
server server2;
fair;
}
e、rl_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
6、 域名是什么
解析一个链接:
http://mail.163.com/index.html
a) http://: 这个是协议,也就是http超文本传输协议,也就是网页在网上传输的协议。
b) mail : 这个是服务器名,代表着是一个邮箱服务器,所以是mail
c) 163.com : 这个是域名,是用来定位未来网站的独一无二的名字
d) mail.163.com : 这个是网域名,由服务器名+域名 组成
e) / : 这个是根目录,也就是说,通过网站名找到服务器,然后在服务器存放网页的根目录
f) index.html:这个是根目录下的默认网页(当然,163的默认网页是不是这个我不知道,只是大部分的默认网页,都是index.html)
g)http://mail.163.com/index.html:这个叫做URL,统一资源定位符,全球性地址,用于定位网上的资源。
域名和网域名的关系:
eg:
比如说,你买下了一个大学,这个大学的名字叫:myname.com.
然后,你想建立一个语文系,所以,文科楼建立了,叫yuwen.myname.com
然后,你又想建立一个数学系,OK,shuxue.myname.com建立了。
就像163一样,他的域名是163.com,他想建立一个www服务器,所以有了www.163.com.
他又想玩邮箱服务器,所以,mail.163.com也有了。
例如我们用的 51jiuke.com 这个是域名 www.51jiuke.com 是分期的网域名 cm.51jiuke.com 是后台管理的网域名
买一个域名回头可以有多个网域名,也就想一个公司有很多的网站访问一样。
eg:
mail.cctv.com
mail 三级域名
cctv 二级域名
com 一级域名
级别最低的域名写在最左边,而级别最高的字符写在最右边
DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思。
各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。
7、dns解析域名
1、域名可分为三大类
a、国家顶级域名nTLD : cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。
b、通用顶级域名gTLD : 最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
c、基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
2、DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位
3、域名服务器分为四种不同的类型
根域名服务器: 最高层次的域名服务器,也是最重要的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址
顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
权限域名服务器:负责一个“区”的域名服务器。
本地域名服务器:本地服务器不属于下图的域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
解析的过程如下:
1、主机m.abc.com先向本地服务器dns.xyz.com进行递归查询。
2、本地服务器采用迭代查询。它先向一个根域名服务器查询。
3、根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
4、本地域名服务器向顶级域名服务器dns.com进行查询。
5、顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。
6、本地域名服务器向权限域名服务器dns.abc.com进行查询。
7、权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。
8、本地域名服务器最后把查询结果告诉m.xyz.com。
4、 DNS的几个基本的概念
a、根域
就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯。
b、域的划分
5、 DNS协议:
DNS在端口53上监听请求并提供相应的服务,DNS查询请求用UDP协议交互并且每个请求的大小小于512字节,但是如果返回的请求大小大于512字节,交互双方会协商使用TCP协议。
6、域维护是指通过DNS协议来在主域名服务器和从域名服务器之间维护同一个zone文件。
DNS中有两种域维护手段,一种是全量传输AXFR(full zone transfer),另一种是增量传输IXFR(incremental zone transfer)。
7、DNS,就是Domain Name System的缩写,翻译过来就是域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库。
DNS能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
8、内网 的ip
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255