Nginx杂记

# Nginx在Linux中的安装

Yum一键安装其他依赖

yum -y install gcc zlib zlib-devel pcre pcre-devel openssl openssl-devel

yum安装依赖

Nginx安装

将安装压缩文件下载放入/opt目录下

进行解压操作

tar -zxvf nginx-1.18.0.tar.gz

进入解压后的目录执行 ./configure

./configure

使用make && make install

make && make install

安装完成之后会在/usr/local下多出一个文件夹nginx,在其中的sbin有启动脚本nginx

启动nginx

cd /usr/local/nginx/sbin	#进入sbin目录中
./nginx	#通过命令启动nginx

如果未开放80端口,则会出现无法访问。

可通过firewall开放端口

firewall-cmd --list-all	#查看所有开放端口
firewall-cmd --add-port=80/tcp --permanent	#添加80端口开放
firewall-cmd --reload	#重新加载防火墙
#再次查看所有开放端口

Nginx的常用命令

要使用nginx操作命令的前提条件:必须进入nginx的目录

cd /usr/local/nginx/sbin

1.查看nginx的版本号

[root@hadoop666 sbin]# ./nginx -v	#查看nginx的版本
nginx version: nginx/1.18.0

2.启动nginx

[root@hadoop666 sbin]# ./nginx	#启动nginx
[root@hadoop666 sbin]# ps -ef|grep nginx	#查看nginx相关的进程

3.关闭nginx

[root@hadoop666 sbin]# ./nginx -s stop	#关闭nginx
[root@hadoop666 sbin]# ./nginx -s quit	#关闭nginx(推荐)
[root@hadoop666 sbin]# ps -ef|grep nginx	#查看nginx相关的进程

4.重新加载nginx

[root@hadoop666 sbin]# ./nginx -s reload	#重新加载nginx的配置文件

Nginx配置文件

位置

nginx配置文件位于 /usr/local/nginx/conf/nginx.conf

组成

由三部分组成

第一部分 全局块

从配置文件开始到events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令

第二部分 events块

events块涉及的指令主要影响Nginx服务器与用户的网络连接

第三部分 http块

Nginx服务器配置中最频繁的部分

http块可以报考http全局块、server块

Nginx配置实例——反向代理

反向代理实例1

1.实现效果

打开浏览器,在浏览器地址栏输入地址www.123.com,跳转到linux系统tomcat主页

2.准备工作

(1)在linux系统中安装tomcat,使用默认端口8080

tomcat安装文件放到linux系统中

1.进行解压,然后进入tomcat的bin目录中,./startup.sh启动tomcat服务器。

2.cd ..退出到上级目录,再cd logs之后tail -f catalina.out查看日志

3.在本机浏览器中输入查看是否能访问tomcat主页(若不能则记得开放端口)

3.具体配置

第一步

在windows系统中的host文件进行域名和ip对应关系的配置

C:\Windows\System32\drivers\etc #host文件位于此目录下

在hosts中添加内容

192.168.199.130 www.123.com

此时通过www.123.com:8080已经能访问到tomcat主页

第二步

在nginx进行请求转发的配置(反向代理配置)

1.进入nginx中,打开配置文件

cd /usr/local/nginx/conf

vim nginx.conf

2.找到server所在的位置,将server_name对应的localhost改为本机的ip(192.168.199.130)

3.找到location所在位置,在其中加上一行

proxy_pass http://127.0.0.1:8080;

server_name

4.若nginx已经处于开启状态,则重新加载配置文件即可./nginx -s reload

​ 若未处于开启状态,则打开即可./nginx(前提是要进入到 /usr/local/nginx/sbin目录下)

5.测试:直接在浏览器输入www.123.com即可出现tomcat主页面

反向代理实例2

1.实现效果

使用nginx反向代理,根据访问的路径跳转到不同的服务中。

nginx监听端口为9001

访问http://192.168.199.130:9001/edu,直接跳转到127.0.0.1:8081

访问http://192.168.199.130:9001/vod,直接跳转到127.0.0.1:8082

2.准备工作

(1)准备两个tomcat服务器

1.新建tomcat8081和tomcat8082文件夹,在其中分别放入tomcat压缩包,并解压

tar -zxvf apache-tomcat-9.0.40.tar.gz

2.进行tomcat的端口配置

进入tomcat的conf目录下,编辑server.xml

第一个将端口8080更改为8081,(shutdown端口也要进行更改8005改为8015,否则会无法启动多个)

第二个将端口8080更改为8082,(shutdown端口也要进行更改8005改为8025,否则会无法启动多个)

进入tomcat的bin目录,使用./startup.sh启动tomcat

3.测试:直接在浏览器中输入192.168.199.130:8081和192.168.199.130:8082都能访问即代表成功

(2)创建文件夹和测试页面

分别放入对应的tomcat的webapps/edu和webapps/vod中a.html里面写

808X

3.具体配置

(1)找到nginx配置文件,进行反向代理配置

    server {
        listen       9001;
        server_name  192.168.199.130;

        location ~ /edu/ {
                proxy_pass  http://127.0.0.1:8081;
        }

        location ~ /vod/ {
                proxy_pass  http://127.0.0.1:8082;
        }
    }

(2)开放对外访问的端口号9001 8081 8082

firewall-cmd --list-all

(3)重新启动nginx或者重新加载配置文件即可

(4)测试

http://192.168.199.130:9001/edu/a.html

测试

http://192.168.199.130:9001/vod/a.html

测试

Nginx配置实例——负载均衡

1.实现效果

(1)浏览器地址输入地址http://192.168.199.130/edu/a.html,负载均衡效果,平均在8081和8082端口。

2.准备工作

(1)准备两台tomcat服务器,一台8081,一台8082

(2)在两台tomcat的webapps目录中,创建名称是edu文件夹,放入a.html用于测试。

(3)直接从浏览器输入192.168.199.130:8081/edu/a.html和192.168.199.130:8082/edu/a.html进行测试

3.在nginx的配置文件中进行负载均衡的配置

(1)在http下面配置(即server块的前面)

    upstream myserver {
        server 192.168.199.130:8081;
        server 192.168.199.130:8082;
}

(2)location中加入proxy_pass http://myserver;

        location / {
            root   html;
            proxy_pass  http://myserver;
            index  index.html index.htm;
        }

配置好了之后,不推荐直接reload配置文件,而是建议关闭再开启,可以检测配置文件是否配置正常。

4.Nginx分配服务器策略

第一种

轮询(默认):每个请求按时间顺序注意分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

第二种

weight(权重):默认为1,权重越高分配的客户端越多。

    upstream myserver {
        server 192.168.199.130:8081 weight=5;
        server 192.168.199.130:8082 weight=10;
}

第三种

ip_hash:每个请求按访问的ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

    upstream myserver {
    	ip_hash;
        server 192.168.199.130:8081;
        server 192.168.199.130:8082;
}

第四种

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

    upstream myserver {
        server 192.168.199.130:8081;
        server 192.168.199.130:8082;
        fair;
}

Nginx配置实例——动静分离

1.动静分离是什么?

2.准备工作

(1)在Linux系统中准备静态资源,用于进行访问

cd /	#进到最开始的主目录
mkdir data
cd data
mkdir images
mkdir www
#使用xftp将图片上传至images,a.html上传至www

3.进行配置

(1)在nginx配置文件中进行配置

        location /www/ {
            root   /data;
            #proxy_pass  http://127.0.0.1:8080;
            #proxy_pass  http://myserver;
            index  index.html index.htm;
        }
        location /images/ {
            root  /data/;
            autoindex  on;
        }

4.进行测试

(1)浏览器中输入地址

http://192.168.199.130/images/java.jpg

因为设置了autoindex on,所以能出现如下所示

输入地址

(2)在浏览器中输入地址

http://192.168.199.130/www/a.html

输入地址

Nginx——配置高可用的集群

1.Nginx高可用

(1)需要至少两台nginx服务器

(2)需要keepalived

(3)需要虚拟ip

2.配置高可用的准备工作

(1)两台服务器192.168.199.130和192.168.199.132

(2)在两台服务器安装nginx

(3)在两台服务器安装keepalived

3.在两台服务器安装keepalived

使用yum安装

yum install keepalived -y

安装之后,在etc里面生成keepalived,有文件keepalived.conf

4.完成高可用配置(主从配置)

(1)修改/etc/keepalived/keepalived.conf配置文件(在windows下写好之后替换linux的配置即可)

网卡配置记得更改eth0—>ens33

! 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.199.130
   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  #网卡(主机上为32,从机上为33,要注意)
    virtual_router_id 51  #主、备机的virtual_router_id必须相同
    priority 90  #主、备机取不同的优先级,主机值较大(100),备机值较小(90)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.199.99  #VRRP H虚拟地址
    }
}

(2)在/usr/local/src/添加检测脚本(检测nginx是否还活着)

#!/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 |wa -l` -eq 0 ];then
        killall kee[alived]
    fi
fi

(3)将两台服务器上的nginx和keepalived启动

启动nginx:./nginx

启动keepalived:systemctl start keepalived.service

5.测试

(1)在浏览器中输入192.168.199.99

输入地址

虚拟网卡绑定成功

虚拟网卡绑定

(2)把主服务器nginx(192.168.199.130)和keepalived停止,再输入

输入

虚拟网卡依旧绑定成功

结果

Nginx原理

1.master(管理员)和worker(工人可以多个)

[root@hadoop666 sbin]# ps -ef|grep nginx
root      13351      1  0 23:17 ?        00:00:00 nginx: master process ./nginx
nobody    13352  13351  0 23:17 ?        00:00:00 nginx: worker process

2.worker如何进行工作

发送请求到Master,Master发出信号给worker,worker进行争抢执行任务。

3.一个master和多个worker有什么好处

(1)可以使用nginx -s reload进行热部署,利于nginx进行热部署

(2)每个worker是独立的进程,如果有其中一个worker出现问题,其他worker独立,可以继续进行争抢,实现请求过程,不会造成服务中断。

4.设置多少个worker才适合

nginx与redis类似,都采用“IO多路复用”机制,但是在windows系统中将会失去此机制,即不能发挥最大的性能。

worker数和服务器的cpu数相等最为适合

5.连接数worker connection

第一个:发送请求,占用了worker的几个连接数?

答案:2或者4个

第二个:nginx有一个master,有四个worker,每个worker支持的最大连接数是1024,目前支持的最大并发数是多少?

  • 普通的静态访问最大并发数是:(worker_connections * worker_process)/2
  • 而如果是HTTP作为反向代理,最大并发数量应该是**(worker_connection * worker_process) /4**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值