Linux系统下的Nginx安装启动(源码编译 启动脚本)+nginx实现负载均衡,配置虚拟主机

一、Nginx概述

       Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器。处理高并发能力是十分强大的,能经受高负载的考验。nginx课堂提供的服务:web 服务、负载均衡 (反向代理)、web cache(web 缓存)

Nginx的优点:

(1)高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数
(2)内存消耗少:在3万并发连接下,开启的10个nginx进程才消耗150M内存(15M*10=150M)
(3)配置文件非常简单:风格跟程序一样通俗易懂
(4)成本低廉:nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
(5)支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组
(6)内置的健康检查功能:如果Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问
(7)节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头
(8)稳定性高:用于反向代理,宕机的概率微乎其微
(9)模块化设计:模块可以动态编译
(10)外围支持好:文档全,二次开发和模块较多
(11)支持热部署:可以不停机重载配置文件
(12)支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化

Nginx反向代理:

(1)多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。
(2)反向代理,“它代理的是服务端”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
(3)作用:保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网;负载均衡,通过反向代理服务器来优化网站的负载。

二、Nginx安装与启动

1. 安装 命令启动

第一步 从Nginx官网安装Nginx压缩包点击下载
下载完成后,解压;我是将下载的压缩包存放在/root/Download/目录下。

[root@servera ~]# cd /root/Download/
[root@servera Download]# tar zxf nginx-1.18.0.tar.gz
[root@servera Download]# ls
nginx-1.18.0  nginx-1.18.0.tar.gz

第二步 解决Nginx依赖性,安装依赖包

yum install -y gcc		//源码的编译依赖gcc环境
yum install -y pcre-devel	//Nginx的模块会使用到PCRE语法。需要安装pcre库
yum install -y openssl-devel	//nginx不仅支持 http协议,还支持 https,需要安装 OpenSSL 库

第三步 进入解压文件目录,开始编译安装
使用./configure --help查看各个模块的使用情况

[root@servera Download]# cd nginx-1.18.0/
[root@servera nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module		
//--prefix指定编译安装路径(nginx真实安装路径)--with-http_ssl_modules安装需要的模块,
//编译成功后,会生成一个Makefile文件,记录了编译时的参数
[root@servera nginx-1.18.0]# make		//将源码编译为二进制程序,注意执行时要和Makefile文件在同一目录下
[root@servera nginx-1.18.0]# make install	//将二进制文件copy到编译的安装路径

在这里插入图片描述
第四步 检测语法 启动nginx
安装完成后,会自动生成目录/usr/local/nginx,启动时需要进入目录/usr/local/nginx/sbin

[root@servera sbin]# ./nginx  //启动nginx
////////////常用命令////////////////
[root@servera sbin]# ./nginx -v		//查看nginx版本
[root@servera sbin]# ./nginx -t		//检测语法
[root@servera sbin]# ./nginx -s stop 	//停止nginx

在这里插入图片描述
在这里插入图片描述

2. Nginx启动脚本

nginx启动脚本就是为了方便对nginx服务的启动,关闭,状态查询的一个脚本文件。参考官方文档编写:官方示例的脚本文件
系统的服务都是默认在 /usr/lib/systemd/system 目录下的,是系统默认的存放路径。在此目录在编辑脚本文件
需要注意的是:
(1)在使用脚本启动时,要确保此时的nginx没有使用命令启动。如果之前启动过,使用命令/usr/local/nginx/sbin/nginx -s stop 停止nginx。
(2)编辑完以后,要给脚本执行权限,使用命令systemctl daemon-reload刷新服务。

[root@servera sbin]# cd /usr/lib/systemd/system/
[root@servera system]# vim nginx.service 
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking					//以下根据自己实际安装的nginx路径修改
PIDFile=/usr/local/nginx/logs/nginx.pid			//pid存放路径	
ExecStartPre=/usr/local/nginx/sbin/nginx -t		//检测语法
ExecStart=/usr/local/nginx/sbin/nginx			//启动
ExecReload=/usr/local/nginx/sbin/nginx -s reload	//重载
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
[root@servera system]# chmod +x nginx.service		//给脚本执行权限
[root@servera system]# systemctl daemon-reload		//刷新
[root@servera system]# systemctl start nginx.service 	//使用命令启动
[root@servera system]# systemctl status nginx.service 	//查看状态

在这里插入图片描述

三、nginx实现负载均衡

实验环境:RHEL7

主机名workstationserveraserver2server3
IP192.168.1.104192.168.1.136192.168.1.102192.168.1.103
职能外部客户端nginx负载均衡器后端服务器后端服务器

说明:为了方便测试,已经修改后端服务器的默认发布页面,server2对应的是vm2,server3服务器对应的是vm3
在这里插入图片描述
实验配置:

我们可以在nginx的主配置文件中配置负载均衡服务器。主配置文件:/usr/local/nginx/conf/nginx.conf(与自己安装的路径有关)
(1)新建一个用户 指定用户主目录,在配置文件中使用此用户启动nginx进程:useradd -M -d /usr/local/nginx -s /sbin/nologin nginx
(2)在系统层面修改每一个worker进程能并发处理(发起)的最大连接数为65536:vim /etc/security/limits.conf

[root@servera ~]# vim /etc/security/limits.conf
nginx   -       nofile          65535

nginx作为反向代理服务器,计算公式最大连接数 = worker_processes * worker_connections/2,所以这里客户端最大连接数是65536
(3)编辑配置文件:

[root@servera ~]# vim /usr/local/nginx/conf/nginx.conf
user  nginx;				//设定nginx用户启动nginx进程
worker_processes  auto;			//指定启动多少进程来处理请求,一般情况下设置成CPU的核数,auto表示自动;lscpu查看CPU
events {
    worker_connections  65535;		//每一个worker进程能并发处理(发起)的最大连接数
}
http {
    upstream westos {			//upstream 定义负载节点
    server 192.168.1.102;		//后端Apache服务器.ps:
    server 192.168.1.103;
        }
   server {
        listen       80;		//监听80端口
        server_name www.westos.org;	//server_name指定服务器,需要在客户端做本地解析
        location / {
                        proxy_pass http://westos;	//proxy_pass一般用于反向代理,模块可以将请求转发到另一台服务器
                }
        }
}
[root@servera ~]# systemctl reload nginx.service 	//每次修改配置文件后,都需要reload.

在这里插入图片描述
可以实现的不同功能测试

在上面基础负载均衡器的配置上,通过添加配置文件的字段,可以实现其他的功能:
(1)设定后端服务器的权重。weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。weight 默认为1.weight越大,负载的权重就越大
(2)添加ip_hash算法。ip_hash,每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。
(3)测试健康检测能力
(4)通过域名访问,在外部客户端要做nginx负载均衡器的本地解析;
(5)创建多个均衡负载器,并且使用不同的算法

////////////////创建多个负载均衡器要添加的配置文件/////////////
http {
    upstream westos {
    server 192.168.1.102;	默认rr轮询算法
    server 192.168.1.103;
        }
   upstream redhat {
        ip_hash;		//设定ip_hash算法
        server 192.168.1.102;
        server 192.168.1.103;
        }
    server {
        listen 80;
        server_name www1.westos.org;
        location / {
                       proxy_pass http://westos;
                    }
         }
server {
        listen 80;
        server_name www2.westos.org;
        location / {
                       proxy_pass http://redhat;
                  }
         }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、nginx配置虚拟主机

http服务上支持若干虚拟主机。每个虚拟主机一个对应的server配置项,配置项里面包含该虚拟主机相关的配置。在提供mail服务的代理时,也可以建立若干server。每个server通过监听地址或端口来区分。

配置步骤:

(1)在配置文件中,复制一段完整的server标签段,到结尾。注意:要放在http的结束大括号前,也就是server标签段放入http标签。添加更改server_name 及对应网页的root根目录。这里只显示部分要添加的字段,并非完整的配置文件。

[root@servera ~]# vim /usr/local/nginx/conf/nginx.conf
   server {
        listen 80;
        server_name www1.westos.org;
        location / {
                root /www1;		//此目录需要手动建立
                index index.html;	//index 表示发布页面
                   }
         }
server {
        listen 80;
        server_name www2.westos.org;
        location / {
                root /www2;
                index index.html;
                  }
         }
[root@servera ~]# systemctl reload nginx.service       

(2)创建server_name 对应网页的根目录,并且建立测试文件,如果没有index首页会出现403错误。

[root@servera ~]# mkdir /www1
[root@servera ~]# vim /www1/index.html
www1
[root@servera ~]# mkdir /www2
[root@servera ~]# vim /www2/index.html
www2 

(3)在外部客户端做server_name 主机的host 解析:

[root@workstation ~]# vim /etc/hosts
192.168.1.136  www1.westos.org  www2.westos.org

访问验证:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值