Ningx的相关知识

概念

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

nginx在linux系统中的安装

nginx官网地址

1.安装gcc依赖

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

2.安装pcre依赖

下载地址

第一步:解压
tar -xvf pcre-8.37.tar.gz     
第二步:进入pcre目录下执行 ./configure
[czf@hadoop01 nginx]$ ls
pcre-8.37  pcre-8.37.tar.gz
[czf@hadoop01 nginx]$ cd pcre-8.37/
[czf@hadoop01 pcre-8.37]$ ./configure
第三步:编译、安装
在该目录下执行 make&&make install命令(注意:make install 需要root权限)
 [czf@hadoop01 pcre-8.37]$ make && make install
第四步:查看版本号
[root@hadoop01 pcre-8.37]# pcre-config --version
8.37

3.安装nginx

1.解压压缩包
tar -zxvf  
2.进入目录
./configure
3.编译、安装
make && make install

实践过程中遇到的问题:解决方案,参考:https://bbs.huaweicloud.com/blogs/212670
Ningx的相关知识
Ningx的相关知识
成功的情况下,进入 cd /usr/local 会生成nginx目录,nginx下的sbin目录下有nginx的启动脚本,以及conf下的配置文件
Ningx的相关知识

4.nginx的启动

进入 usr/local/nginx/sbin
Ningx的相关知识
在哪访问?/usr/local/nginx/conf配置文件里面可以看到绑定的端口为80
Ningx的相关知识
Ningx的相关知识

关于linux的防火墙的问题

在 windows 系统中访问 linux 中 nginx,默认不能访问的,因为防火墙问题
(1)关闭防火墙
(2)开放访问的端口号,80 端口
查看开放的端口号
firewall-cmd --list-all
设置开放的端口号
firewall-cmd --add-service=http –permanent
firewall-cmd --add-port=80/tcp --permanent
重启防火墙
firewall-cmd –reload

Ningx的相关知识

常用命令

进入/usr/local/nginx/sbin文件夹下

启动
./nginx 
停止
./nginx -s stop
重启
./nginx -s reload

nginx配置实例

正向代理

定义:代理的是客户端,进而访问服务端
Ningx的相关知识

反向代理

准备工作
虚拟机1:192.168.96.130 tomcat下webapp下创建dev文件夹里面再创建一个html。
虚拟机2:192.168.96.132 同理
Ningx的相关知识
1.nginx.conf监听192.168.96.130 的9000端口,如果匹配到了/dev/路径就代理本机ip的8080端口(即:192.168.96.130:8080/dev/),匹配到/vod/同理代理192.168.96.132的8080端口

server {
        listen      9000;
        server_name  192.168.96.130;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location ~/dev/{
            root   html;
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }
        location ~/vod/{
            root   html;
            proxy_pass http://192.168.96.132:8080;
            index  index.html index.htm;
        }

测试

Ningx的相关知识
Ningx的相关知识

nginx.conf配置文件location 属性说明

location 中可用的匹配命令有两种:普通字符串和正则表达式。~ 和~* 用于正则表达式,其他前缀和无任何前缀都用于普通字符串。正则表达式会根据匹配顺序,匹配到第一个正则表达式后停止搜索。普通字符串匹配则无视顺序,只会选择最精确的匹配。常用的匹配命令和作用如下:
Ningx的相关知识

常用的几种情况

用于动静分离配置静态资源

访问192.168.96.130/images/1.jpg 相当于/home/czf/static/images/1.jpg

     #访问.../images  相当于访问  root   /home/czf/static/ images/   这个文件夹(相当于将匹配上路径进行拼接处理)
        location /images/ {
            root   /home/czf/static/;
            index  index.html index.htm;
        }

用于配置反向代理

参考文章:https://blog.csdn.net/foupwang/article/details/89291113
假设站点名字是http://server;如下图所示:前者相当于替换操作,后者相当于拼接操作。
Ningx的相关知识

nginx动静分离

Ningx的相关知识
准备工作
创建一个文件夹存放静态的资源,2个子文件夹。一个存放html,一个存放图片
Ningx的相关知识
配置文件(这里必须得有 user root 否则会报错403 forbidden,启动nginx的用户必须和文件夹创建者相同)

#user  nobody;
user  root;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen      80;
        server_name  192.168.96.130;
         #访问.../images  相当于访问  root   /home/czf/static/ images/   这个文件夹
        location /images/ {
            root   /home/czf/static/;
            index  index.html index.htm;
        }
    #同理访问.../html  相当于访问  root   /home/czf/static/html/   这个文件夹
    location /html/ {
            root   /home/czf/static/;
            index  index.html index.htm;
        }

测试

Ningx的相关知识
Ningx的相关知识

nginx负载均衡

准备工作(在上一个实例上修改)
虚拟机1:192.168.96.130 tomcat下webapp下创建dev文件夹里面再创建一个a.html。
虚拟机2:192.168.96.132 同理 也创建一个dev/a.html
修改nginx.conf配置文件

   upstream myserver{
         server 192.168.96.130:8080;
         server 192.168.96.132:8080;
   }
    server {
        listen      9000;
        server_name  192.168.96.130;
        location / {
            root   html;
            proxy_pass http://myserver;
            index  index.html index.htm;
        }

测试:

Ningx的相关知识
Ningx的相关知识

nginx的分配策略

Ningx的相关知识
Ningx的相关知识

配置高可用的nginx集群

keepalived.conf

! Configuration File for keepalived
 
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL       #LVS_DEVEL  访问的主机名字,在host文件绑定ip。表示运行keepalived服务器的一个标识
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_script chk_http_port{
    script "/usr/local/src/nginx_check.sh"
    
    interval 2 #检测脚本执行的间隔
    
    weight 2
}
 
vrrp_instance VI_1 {
    state MASTER     #备份服务器上将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.96.50 #注意虚拟ip必须和虚拟机ip在同一网段,要不然访问不到
    }
}

查询网卡
Ningx的相关知识

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

Ningx的相关知识
准备环境
1、2台已经安装好了的Nginx虚拟机
192.168.96.130
192.168.96.132
2、两台虚拟机安装keepalived
(1)使用 yum 命令进行安装
yum install keepalived –y
(2)安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf

配置
(1)修改/etc/keepalived/keepalivec.conf 配置文件
(2)在/usr/local/src 添加检测脚本nginx_check.sh
(3)把两台服务器上 nginx 和 keepalived 启动
启动 nginx:./nginx
启动 keepalived:systemctl start keepalived.service

在nginx主服务器上 输入ip a命令
Ningx的相关知识
问题总结:
当2台虚拟机ip和虚拟ip不是一个网段的时候,浏览器输入虚拟地址是访问不到2个nginx服务器的。

测试
1.浏览器输入虚拟ip
Ningx的相关知识
2.将nginx主服务器和keepalived.service(主服务器上的)都停掉,再输入虚拟ip,若还能访问到,说明主从配置成功了。(注意是2个都停掉,只关nginx不起作用,访问不到)
[root@hadoop01 sbin]# ./nginx -s stop
[root@hadoop01 sbin]# systemctl stop keepalived.service
Ningx的相关知识
这时候在从服务器上输入 ip a ,和之前主服务器上相同了。
Ningx的相关知识

上一篇:7、 Nginx的高可用集群


下一篇:这么多TiDB负载均衡方案总有一款适合你