首页 > 其他 > 详细

nginx入门

时间:2021-06-09 17:57:30      阅读:26      评论:0      收藏:0      [点我收藏+]

1. Nginx简介

1.1. 什么是nginx

(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx专为性能优化而开发,性能是器最重要的考量,实现上非常注重效率,能经受高负载的考验,据报告能支持高达50,000个并发连接数。
Nginx不仅能做反向代理,实现负载均衡;还能可以作正向代理来进行上网等功能。

1.2. 正向代理

用户知道目标服务器地址,但由于网络限制等原因,无法直接访问。这时候需要先连接代理服务器,然后再由代理服务器访问目标服务器。
技术分享图片

1.3. 反向代理

反向代理对用户则是不可知的,比如我们访问百度网站,百度的代理服务器对外的域名为 https://www.baidu.com 。具体内部的服务器节点我们不知道,现实中我们通过访问百度的代理服务器后,代理服务器给我们转发请求到他们N多的服务器节点中的一个给我们进行搜索后将结果返回
技术分享图片

1.4. 负载均衡

客户端发送多个请求到服务器,服务器处理请求,有些可能要访问数据库,服务器处理完毕后再将结果返回客户端。
这种架构模式单一,适合并发请求少的情况,但并发量大的时候如何解决?
技术分享图片
首先可能想到升级服务器配置,但硬件的性能不能满足日益增长的需求,此时想到服务器集群,增加服务器数量,然后将原来请求单个服务器的情况改为请求分发到多个服务器上,将负载分发到多个服务器上,也就是我们讲的负载均衡。
技术分享图片

1.5. 动静分离

技术分享图片
Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大致分为两种,一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。
通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码 200。

2. Nginx安装

2.1. 下载nginx

进入官网下载:http://nginx.io

2.2. 安装相关依赖

第一步,安装pcre
1.1、wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
1.2、解压文件 tar -xzvf 路径
1.3、pcre主目录执行命令 ./configure
可能遇到情况:没有c++支持

         安装c++支持:yum install -y gcc gcc-c++

1.4、完成后、回到pcre目录下执行 make && make install
1.5、查看版本 pcre-config --version

** 第二步,安装其他依赖**
zlib openssl
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

2.3. 安装nginx

1、解压nginx-xx.tar.zg包
2、进入解压目录,执行./configure
3、make && make install

2.4. 开放端口

查看开放的端口号
firewall-cmd --list-all
设置开放的端口号
firewall-cmd --add-service=http –permanent
sudo firewall-cmd --add-port=80/tcp --permanent
重启防火墙
firewall-cmd –reload

3. Nginx常用命令

查看版本
nginx -version
启动nginx
在/nginx/sbin 目录下执行./nginx
关闭nginx
在nginx/sbin 目录下执行 ./nginx -s stop
重新加载nginx
在/nginx/sbin 目录下执行./nginx -s reload

4. Nginx配置文件

4.1. 第一部分:全局块

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

4.2. 第二部分:events块

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。

4.3. 第三部分:http块

这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
需要注意的是: http 块也可以包括 http 全局块、 server 块。

http全局块

http 全局块配置的指令包括文件引入、 MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

server块

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了
节省互联网服务器硬件成本。
每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。

5. Nginx配置实例

5.1. 反向代理

5.1.1. 单端口反向代理

实现效果:输入www.123.com跳转到tomcat首页

a) 安装tomcat
将tomcat安装包复制到linux中,tar -zxvf 包名 解压,进入bin目录,输入./startup.sh启动。对外开放访问的端口:firewall-cmd –add-port=8080/tcp –permanent, 输入firewall-cmd -reload重启防火墙

b) 修改本机端口映射
在本机hosts文件中添加127.0.0.1 www.123.com

c) 修改nginx配置文件
技术分享图片

5.1.2. 多端口反向代理

实现效果:访问http:// 192.168.0.105:9001/edu/跳转到192.168.0.105:8001,
访问http:// 192.168.0.105:9001/vod/跳转到192.168.0.105:8002

安装两个tomca分别定义端口为8001和8002。
创建文件夹和测试页面
技术分享图片
技术分享图片
技术分享图片
开放端口:

firewall-cmd --add-port=8001/tcp --permanent
firewall-cmd --add-port=8002/tcp --permanent
firewall-cmd --add-port=9001/tcp --permanent
firewall-cmd --reload

5.2. 负载均衡

准备两个tomcat,一台8001,一台8002。
在两个tomcat的webapps目录中,创建名称为edu的文件夹,在edu下创建一个a.html,用于测试。
配置nginx.conf文件:

在http模块中配置
upstream myserver{
         server  192.168.0.105:8001 weight=1;
         server  192.168.0.105:8002 weight=2;
    }
在server模块配置
         listen       80;
         server_name  192.168.0.105;
         location / {
            proxy_pass http://myserver;
            root   html;
            index  index.html index.htm;
        }

Nginx提供了几种分配方式:

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 宕掉,能自动剔除。
2、weight
weight 代表权,重默认为 1,权重越高被分配的客户端越多
指定轮询几率, weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如:
技术分享图片
3、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:

upstream server_pool{
  ip_hash;
  server 192.168.5.21:80;
  server 192.16  8.5.22:80;
}

4、 fair(第三方,需要安装第三方模块)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream server_pool{
  server 192.168.5.21:80;
  server 192.168.5.22:80;
  fair;
}

5.3. 动静分离

在linux系统中准备静态资源,用于测试
技术分享图片
修改nginx.conf配置文件:
技术分享图片

5.4. 高可用集群

5.4.1. 准备工作

  • 需要两台服务器
  • 需要安装keepalived(yum install keepalived-v)
  • 需要虚拟ip

5.4.2. 完成高可用配置(主从模式)

  1. 修改/etc/keepalived/keepalived.conf配置文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
	}

notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.17.129
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2	#(检测脚本执行的间隔)
weight 2
}

vrrp_instance VI_1 {

state BACKUP	# 备份服务器上将 MASTER 改为 BACKUP
interface ens33	//网卡
virtual_router_id 51	# 主、备机的 virtual_router_id 必须相同
priority 100	# 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

virtual_ipaddress {
192.168.17.50 // VRRP H 虚拟地址
}

}
  1. 在/usr/local/src添加检测脚本(nginx_check.sh)
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];
    then /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];
    	then killall keepalived
    fi
 fi
  1. 把两台服务器上nginx和keepalived启动
systemctl start nginx
systemctl start keepalived.service
  1. 测试
    在浏览器地址栏输入虚拟地址ip 192.168.17.50
    把主服务器(192.168.17.129) nginx和keepalived停止,再输入192.168.17.50还能访问

nginx入门

原文:https://www.cnblogs.com/lzy7422/p/14866991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!