1. 课程目标
- 掌握Nginx的安装
- 掌握Nginx的静态网站部署
- 理解Nginx的反向代理与负载均衡,能够配置反向代理和负载均衡 系统环境:Centos 7.8
2. Nginx的安装与启动
2.1 为什么是Nginx?
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日.
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
2.2 Nginx的应用场景
- http服务器。Nginx是一个http服务可以独立提供http服务,可以做网页静态服务器(只有html、css、js等文件)。
- 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机
- 反向代理,负载均衡。当网站的访问量到达一定程度后,单台服务器不能满足用户的请求时,需要使用多台服务器集群可以使用Nginx做反向代理,并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
2.3 Nginx在Linux下的安装
环境准备
需要gcc的环境
1
yum install gcc-c++
第三方的开发包
PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括perl兼容的正则表达式库。Nginx的http模块使用PCRE来解析正则表达式
1
yum install -y pcre pcre-devel
zlib
zlib库提供了很多压缩和解压缩的方式,nginx使用zlib对http包内容进行gzip
1
yum install -y zlib zlib-devel
OpenSSL
OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法,常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其他目的使用。Nginx不仅支持http协议,还支持https。
1
yum install -y openssl openssl-devel
Nginx下载
- 官方网站下载nginx:http://nginx.org/
- tar.gz文件放到/usr/local下面解压缩
tar -zxvf 压缩包名
Nginx安装
进入到压缩包解压缩之后得到的文件夹,此处为
/usr/local/nginx-1.8.0
使用configure命令创建Makefile文件
1
./configure
之后可以发现当前文件夹中多了一个Makefile文件
编译
1
make
安装
1
make install
这时候需要新建一个文件夹
1
mkdir /var/temp/nginx/client -p
安装完成!!!
启动Nginx
安装完成后,可以看到/usr/local下多了一个
nginx
文件夹进入到
/usr/local/nginx/sbin
下执行命令1
./nginx
启动完成,可以在网页输入ip地址(80端口)进行访问
其他相关命令:
1
2
3./nginx -s stop # 关闭,比较暴力
./nginx -s quit # 关闭,比较温和
./nginx -s reload #重启,常用于刷新配置文件
3.防火墙的设置以及云服务器端口开放的设置
我是买了一个阿里云的服务器作为虚拟机来进行网页开发,由于阿里云它默认开启的端口就两个:22、3389,所以在配置mysql(3306)、tomcat(8080)以及Nginx(80)的时候,就需要我们做两件事情:
在云服务器的控制台那里配置安全组,将想要开放的端口设置好
设置防火墙
防火墙相关设置的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23firewall-cmd --permanent --zone=public --add-port=3306/tcp #添加端口,加完要重启防火墙
firewall-cmd --permanent --zone=public --remove-port=3306/tcp #删除端口,删完要重启防火墙
#说明:
#–zone #作用域
#–add-port=3306/tcp #添加端口,格式为:端口/通讯协议
#–permanent 永久生效,没有此参数重启后失效
查看端口状态 netstat -an | grep 3306
查看已开启的端口,重启防火墙后有效
firewall-cmd --list-ports
systemctl restart firewalld #重启防火墙
systemctl status firewalld #查看防火墙状态
systemctl stop firewalld #关闭防火墙