1.Nginx的认识
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。 50,000 个并发连接数的响应.
【注:nginx它是一个反向代理的服务器,而且占用内存小,并发能力强。默认并发2w. 】
2.使用Nginx的好处
并发量高且代理后面的服务器提高安全性
3.使用Nginx
下载Nginx包
https://nginx.org/en/download.html
【注:一定要下载linux版本】
3.1安装c语言环境
由于Nginx是由c语言开发,要想使用就必须配置C语言环境
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
3.2 把下载的nginx放入linux系统
这里依然放入 /usr/local/app 下
解压该压缩文件
tar -zxvf nginx-1.24.0.tar.gz
3.3创建Nginx安装目录
cd 进入到 /usr 文件夹下创建 名为 Nginx的文件夹作为Nginx的安装目录
cd /usr
mkdir Nginx
3.4指定Nginx安装路径
再次进入到Nginx解压目录,也就是 /usr/local/app 下的解压后的Nginx文件
cd进入
ls查看文件
输入命令指定Nginx的安装路径
./configure --prefix=/usr/nginx
3.5编译和安装
还是在解压后的Nginx文件中进行编译安装
make install
编译并安装,成功后查看 ls /usr/Nginx
下的文件
有上面图片中的文件即安装成功
3.6Nginx中文件概述
html: 静态资源目录
logs: 日志----如果启动nginx出现错误时,会在该目录下的日志文件中显示
3.7启动与关闭Nginx
此时进入到Nginx的安装目录中的sbin目录
cd /usr/nginx/sbin
输入
./nginx
启动Nginx
查看是是否启动成功:
ps -ef | grep nginx
启动成功!
关闭和重新加载命令:
./nginx #开启Nginx
ps -ef | grep nginx #查看Nginx进程
./nginx -s stop #关闭nginx
./nginx -s reload #重新加载nginx配置文件
【注:第一次启动成功时一定不要忘了防火墙放行其端口且刷新防火墙】
【注:Nginx默认端口80】
此时,启动成功并放行80端口后,打开浏览器输入 你的虚拟机或者服务器的ip地址:80
ls查看文件找到 名为nginx.conf 的文件并打开
4.1复写server
现在我们模仿人家,自定义一个server标签
server{
listen 82;
server_name localhost;
location / {
root www;
index index.html index.htm;
}
}
更改配置文件后退出保存
刷新其文件,因为更改了配置
cd /usr/nginx/sbin
./nginx -s reload
我在 /usr/nginx/ 下新建了目录名为www,其中创建了一个index.html文件
其中index.html文件写了一句HelloWord
现在我们启动Nginx服务【注:如果没启动就启动,启动了就跳过】
./nginx
打开浏览器输入服务器或者虚拟机ip地址:82
成功!!!
5.Nginx的核心功能
【1】反向代理
【2】负载均衡
【3】动静分离
【4】nginx的高可用
6.Nginx反向代理
知识扩充:
6.1正向代理概念:
vpn服务就是正向代理,由于国内被限制禁止访问国外的一些网站,所以有的时候我们需要借助vpn来达到目的
当我们使用VPN时,我们向国外服务器发起请求,vpn会代理这些请求转发给国外的服务器,国外的服务器会把服务器返回给vpn解析后返回给我们
此时,国外的服务器并不知道vpn后的真实服务,这就是正向代理
6.2反向代理概念:
那么理解正向代理后,反向代理也就不难理解,其也就是通过Nginx代理服务器或其他代理服务器,代理一台或多个服务器接受客户端的请求,Nginx代理服务器会把这些请求分发给后面的服务器,这时,客户端并不知道代理服务器后服务器的真实ip地址,只知道是有Nginx代理的服务器
6.3使用反向代理
(1)搭建nginx服务器--5.0标题之前搭好了
【需要准备两台虚拟机或者服务器演示】
打开Idea新建springboot工程,勾选web依赖
进入后打开pom文件,更改SpringBoot版本为2.3.2
在java包下com.aaa下新建controller层 【注:我的包名是叫com.aaa】
新建HelloController类
给上@RestContortller
新写方法
@GetMapping("/hello")
pubilc String Hello(){
return "Hello~~~~~~~~~~~~";
}
且打包导出
将打包后的jar包拖入到linux系统中,我这里就直接放入/根目录中
运行项目:
java -jar 你拖入的jar包名
【注:linux环境中必须安装了jdk。】
·此时,我们到第二台虚拟机中:
在这中,也需要相应的Nginx环境配置,与第一台虚拟机一样
进入 /usr/nginx/conf 中编辑nginx.conf 文件更改配置
server{
listen 81; #【注:这里是一会要直接访问的端口】
server_name localhost;
location / {
proxy_pass http://192.168.235.135:8080;#【注:这里的ip地址需要写被代理的服务器ip,也就是运行jar包的那台服务器ip地址】
}
}
firewall-cmd --add-port=81/tcp --zone=public --permanent #【注:放开刚刚设置的81端口】
systemctl restart firewalld #【注:放开端口后刷新防火墙】
此时到浏览器上输入第二台的ip地址:81/hello
反向代理成功!!!!