Nginx介绍对比安装,配置文件详解,虚拟主机使用

 

Nginx有哪些作用

作用

  • web服务器
  • 反向代理服务器
  • 负载均衡
  • 虚拟主机:有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。例如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

lvs/nginx/haproxy优缺点

Nginx的优势是:

一、跨平台:Nginx 能够在大多数 Unix like OS编译运行; 二、Master/Worker 结构:一个 master 进程,生成一个或多个 worker 进程; 三、配置异常简单:很是容易上手。 四、非阻塞、高并发链接:官方测试可以支撑5万并发链接。 五、内置的健康检查功能:若是 Nginx 代理的后端的某台 Web 服务器宕机了,不会影响前端访问; 六、稳定性高:用于反向代理,宕机的几率微乎其微。

Nginx的缺点/瓶颈是:

一、Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些,这个是它的缺点。 二、对后端服务器的健康检查,只支持经过端口来检测,不支持经过url来检测;不支持Session的直接保持,但能经过ip_hash来解决;

LVS:使用Linux内核集群实现一个高性能、高可用的负载均衡服务器;它具备很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)

LVS的优势是:

一、抗负载能力强、是工做在网络4层之上仅做分发之用,没有流量的产生;这个特色也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低; 二、配置性比较低,这是一个缺点也是一个优势,由于没有可太多配置的东西;因此并不须要太多接触,大大减小了人为出错的概率 三、工做稳定,由于其自己抗负载能力很强,自身有完整的双机热备方案:如LVS+Keepalived,不过咱们在项目实施中用得最多的仍是LVS/DR+Keepalived、 四、无流量,LVS只分发请求,而流量并不从它自己出去,这点保证了均衡器IO的性能不会收到大流量的影响。 五、应用范围较广,由于LVS工做在4层,因此它几乎可对全部应用作负载均衡,包括http、数据库、在线聊天室等

LVS的缺点是:

一、软件自己不支持正则表达式处理,不能作动静分离;而如今许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优点所在; 二、若是是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了;后面有Windows Server的机器的话,若是实施及配置还有维护过程就比较复杂了相对而言,Nginx/HAProxy+Keepalived就简单多了。

HAProxy的特色是:

一、HAProxy也是支持虚拟主机的。 二、HAProxy的优势可以补充Nginx的一些缺点,好比支持Session的保持,Cookie的引导;同时支持经过获取指定的url来检测后端服务器的状态。 三、HAProxy跟LVS相似,自己就只是一款负载均衡软件;单纯从效率上来说HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。 四、HAProxy支持TCP协议的负载均衡转发,能够对MySQL读进行负载均衡;对后端的MySQL节点进行检测和负载均衡,你们能够用LVS+Keepalived对MySQL主从作负载均衡。 五、HAProxy负载均衡策略很是多,Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)。

LVS、Nginx、HAproxy有什么区别?工做中你怎么选择?

LVS: 是基于四层的转发;HAproxy:是基于四层和七层的转发,是专业的代理服务器;Nginx:是WEB服务器,缓存服务器,又是反向代理服务器,能够作七层的转发

区别: LVS因为是基于四层的转发因此只能作端口的转发;而基于URL的、基于目录的这种转发LVS就不行

工作选择:HAproxy和Nginx因为能够作七层的转发,因此URL和目录的转发均可以作;在很大并发量的时候咱们就要选择LVS,像中小型公司的话并发量没那么大;选择HAproxy或者Nginx足已,因为HAproxy由是专业的代理服务器;配置简单,因此中小型企业推荐使用HAproxy。

Tomcat/Apache/Nginx区别:

  • Apache HTTP服务器是一个模块化的服务器,能够运行在几乎全部普遍使用的计算机平台上。其属于web服务器。Apache支持模块多,性能稳定,Apache自己是静态解析,适合静态HTML、图片等,但能够经过扩展脚本、模块等支持动态页面等。
  • Tomcat是应用(Java)服务器,它是一个Servlet容器,能够认为是Apache的扩展,可是能够独立于Apache运行。
  • Nginx是一个高性能的HTTP和反向代理服务器。Nginx优势:负载均衡、反向代理、处理静态文件优点。nginx处理静态请求的速度高于apache;

简介

Nginx(发音同“engine X”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存(第七层负载均衡和第四层负载均衡)

二进制脚本安装

bash <(curl -s -L https://cdn.jsdelivr.net/gh/yutao517/code@main/bash/one-key-nginx-install.sh)

nginx启动与关闭等常用命令

#启动
echo "/usr/local/nginx/sbin/nginx" >>/etc/rc.local #写入开机自启动配置文件
chmod +x /etc/rc.d/rc.local #给可执行权限
#关闭
nginx -s stop #立即强制关闭,不管有没有正在处理的请求
nginx -s quit #优雅关闭,先处理完正在运行的请求
nginx -s reload #修改了nginx的配置文件,相当于刷新服务,启用新配置,不会中断业务
nginx -t #配置文件语法测试
cd /usr/local/nginx/logs #日志文件
#access.log记录正常的访问
#error.log记录出错的信息
#nginx.pid记录master的pid号

#如果是yum安装html一般在 /usr/share/nginx/html/,可执行文件在/usr/sbin/nginx,log文件在/var/log,配置文件在/etc/nginx

nginx的master和woker的关系

在这里插入图片描述 master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。 注意:不是先到master然后调度woker负载均衡

nginx.conf 配置文件参数介绍

nginx.conf作用:给nginx进程提供参数 修改配置文件后一定要刷新服务因为本质上是让Linux进程重新去加载配置文件,按照修改了的配置文件里的内容工作

worker_processes  2;#进程设置值和CPU核心数一致
events {
    worker_connections  2048;#每一个工作进程的最大连接数量(并发数), 最大的并发数,理论上,但是和cpu有关,做压力测试可知道实际。 理论上最大连接数 = worker_processes * worker_connections
}
http {
    include       mime.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"'代理转发;
    sendfile        on;  提升性能
    keepalive_timeout  65; #长连接,保持65秒的长连接
    server {
	listen  80;
	server_name www.wyt.com;
        access_log  logs/wyt.access.log  main;
        #日志会记录到wyt.access.log
        location / {
            root   html/wyt;
            index  index.html index.htm;#首页
        }
        error_page  404     #找不到的错误页面         /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html { #服务器内部错误
            root   html;
        }
		 
    }

}

文件描述符的问题

永久修改文件描述符的限制

vim /etc/security/limits.conf
#添加两行
*soft nofile 100000
*hard nofile 100000

完成三个域名的虚拟主机配置

vim /usr/local/scwangyutao99/conf/nginx.conf

server_name www.wyt.com;

access_log  logs/wyt.access.log  main;

location / {
    root   html/wyt;     #需要去html文件下新建wyt目录下新建html页面
    index  index.html index.htm;
}

error_page  404              /404.html;
mkdir /usr/local/scwangyutao99/html/wyt
vim index.html
	#写入
	wyt
	wangyutao666
  • 测试语法 nginx -t
  • 刷新nginx服务 nginx -s reload
  • 去另一台局域网主机修改hosts文件域名
echo "192.168.2.9 www.wyt.com" >> /etc/hosts
  • 域名访问
curl www.wyt.com
  • 可以看到新建的html网页

    在这里插入图片描述

同理三个域名

在这里插入图片描述

在这里插入图片描述

  • 基于IP的虚拟主机:一个网站对应一个公网IP
  • 基于端口的虚拟主机:一个网站一个端口
  • 基于域名的虚拟主机:通过不同的域名区别开不同的网站,但这些网站公用一个公网ip和使用相同的端口80

    优点:节省服务器 缺点:一台虚拟服务器受到攻击,其他网站会受到牵连,共用CPU,内存,磁盘,带宽。一台服务器的访问量特别大,会导致其他网站异常。