web服务-nginx

目录

一、介绍和安装

 二、nginx常用命令

三、nginx配置文件解释

四、负载均衡算法策略

五、常用模块介绍

六、nginx和apache的区别

一、介绍和安装

Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

安装方式:

  1. yum安装:
    1. 到nginx或者centos的官方去下载nginx的软件包安装,快捷、方便、高效
  2. 编译安装:
    1. nginx是用C语言编写的,将源码编译成二进制程序,然后安装,需要自己解决软件之间的依赖关系,还需要指定很多的配置,难度大,可以定制开启需要的功能,指定安装的路径
  3. 编译安装经典三部曲:
    1. 编译前的配置:./configure——》会生成一个makefile的方案
    2. 编译:理解为将源代码编译成二进制程序
    3. 编译安装:将已经编译好的二进制程序安装(cp)到指定的路径

如何卸载?如何升级nginx?

        删除安装时指定的目录和PATH;升级重新去编译安装一个新的

安装文件介绍:
        a. conf 存放nginx的配置文件
        b. html 存放网站的网页的目录
            i. index.html 网站首页
        c. logs 存放日志
        d. sbin 存放nginx的启动程序
        e./configure --help:查看参数介绍,或者去nginx.org查看


一键编译安装脚本:

#!/bin/bash
 #安装依赖
 yum install epel-release -y
 yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim wget
 #新建用户和组
 id lilin || useradd lilin -s /sbin/nologin
 #下载nginx软件包
 mkdir /lilin99 -p
 cd /lilin99
 wget https://nginx.org/download/nginx-1.21.4.tar.gz
 #解压软件
 tar -xf nginx-1.21.4.tar.gz
 cd nginx-1.21.4
 #编译前做好配置
 ./configure --prefix=/usr/local/sclilin99 --user=lilin --group=lilin --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_gunzip_module
 #判断配置是否成功
 if (( $? != 0 ));then
  echo "编译配置出错,已退出"
  exit
 fi
 #开始编译,启动两个进程,提高速度
 make -j 2
 #安装
 make install
 #修改PATH变量,方便执行nginx相关命令
 echo "PATH=$PATH:/usr/local/sclilin99/sbin" >> /root/.bashrc
 source /root/.bashrc
 #停一秒,让上一条命令执行完
 sleep 1
 #关闭防火墙并设置开机不启动,同时关闭selinux
 systemctl stop firewalld
 systemctl disable firewalld
 setenforce 0
 sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
 #设置nginx开机自启
 chmod +x /etc/rc.d/rc.local
 echo "/usr/local/sclilin99/sbin/nginx" >> /etc/rc.local
 #修改nginx.conf的配置,例如:端口号、worker进程数、线程数、服务域名
 sed  -i '/worker_processes/ s/1/4/' /usr/local/sclilin99/conf/nginx.conf
 sed  -i '/worker_connections/ s/1024/2048/' /usr/local/sclilin99/conf/nginx.conf
 sed  -i -r '36c \\tlisten 80;' /usr/local/sclilin99/conf/nginx.conf
 sed  -i -r '37c \\tserver_name www.lilin.com;' /usr/local/sclilin99/conf/nginx.conf
 #杀死nginx进程
 killall -9 nginx
 #启动nginx
 /usr/local/sclilin99/sbin/nginx

 二、nginx常用命令

  1. nginx -s stop:fast shutdown,强制立即关闭服务
  2. nginx -s quit:granceful shutdown,让正在访问的用户正常访问,并禁止新的用户访问
  3. nginx -s reload:reloading the configuration file,重新加载配置文件,启用新的进程让用户访问,旧的进程会等用户访问完后关闭,并停止接受新的连接
  4. conf/nginx.conf是nginx的主配置文件,作用是给nginx进程传递参数
  5. nginx -t:测试nginx的主配置文件是否有错
  6. nginx有一个主进程和几个工作进程。主进程的主要目的是读取和评估配置,以及保持工作进程。工作进程对请求进行实际处理。

三、nginx配置文件解释

        全局配置(worker processes、user、pid、user nobody)
		events{
			worker_connections 2048;
		}
		http{
			server{
				listen
				server_name
				access log
				format
				location / {
					root
					index
				}
			}
		https{}1version
        }

第一部分:全局块
从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以 及配置文件的引入等。
比如上面第一行配置的:
worker_processes  1;
这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。


第二部分:events块
events {
    worker_connections  1024;
}
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否 允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。
上述例子就表示每个 work process 支持的最大连接数为 1024.
这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。


第三部分:http块
算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
需要注意的是:http 块也可以包括 http全局块、server 块。
http全局块
http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
server 块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了 节省互联网服务器硬件成本。
每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。
location 块
一个 server 块可以配置多个 location 块。
这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称 (也可以是IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。 地址定向、数据缓 存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

四、负载均衡算法策略

a轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,默认情况下所有的服务器的权重值都是1 ,值越大优先级越好(加权轮询),如果后端服务器 down 掉,能自动剔除。

ip_hash
基于客户端的ip地址做负载均衡,相同的ip地址转发到同一个服务器 。ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器

fair(第三方)
fair(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。

五、常用模块介绍

1、http_ssl_module:实现https认证功能

修改配置文件启用:

 然后浏览器使用绑定的域名去访问进行验证


 

实现http跳转到https页面功能:在http的server块里修改:

2、http_realip_module:负载均衡后让web服务器知道客户端的ip地址

  1. 在负载均衡器上修改http请求报文头部字段,添加一个X-REAL-IP字段
  2. 在后端real server上使用set_real_ip_from 192.168.43.2

3、stream:实现四层负载均衡

配置:

worker_processes  4;

events {

    worker_connections  2048;

}

stream {

upstream web_servers {

hash $remote_addr;

server 192.168.43.3:80;

server 192.168.43.4:80;

}

upstream dns_servers {

hash $remote_addr;

server 192.168.43.3:53;

server 192.168.43.4:53;

}

server {

listen 80;

proxy_pass web_servers;

}

server {

listen 54 udp;

proxy_pass dns_servers;

}

}

六、nginx和apache的区别

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

两者最核心的区别在于:Apache是同步多进程模型,一个连接对应一个进程,而Nginx是异步的,多个连接(万级别)可以对应一个进程。

适用场景:一般来说,需要性能要求的web服务,用Nginx;如果不需要性能只求稳定,更考虑Apache;Nginx处理放静态内容比Apache要好,特别是在可承受压力、带宽及资源消耗上都要优于Apache。所以更为通用的方案是,前端Nginx抗并发,后端Apache集群,配合起来会更好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值