# Nginx在Linux中的安装
Yum一键安装其他依赖
yum -y install gcc zlib zlib-devel pcre pcre-devel openssl openssl-devel
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;
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
**