Nginx 学习
一、Nginx快速理解
当项目部署到服务器上,用户量不多时,在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户。
但慢慢的,用户增多了,并发量也慢慢增大了。这时候一台服务器已经很难满足需求了。
于是我们横向扩展,又增加了服务器。这时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器(Nginx)了。通过代理服务器帮我们转发和处理请求。
二、什么是Nginx
Nginx是一款轻量级、高性能的Web服务器、反向代理服务器。
特点:占有内存少,并发能力强。事实上Nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用Nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。
官方数据测试表明能够支持高达 50,000 个并发连接数的响应
2.1 反向代理和正向代理
反向代理:是指代理服务器来接收Internet上的客户端请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端。此时代理服务器对外就表现为一个反向代理服务器。
正向代理:是一个位于客户端和原始服务器之间的服务器,为了从原始服务器获得内容。客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转发并获得的内容返回给客户端。
2.2 反向代理和正向代理的区别
正向代理,是在客户端的。比如VPN,VPN是在我们的用户浏览器端设置的,并不是在远程服务器上的。
反向代理,是作用在服务器端的,是一个虚拟ip。对于用户的一个请求,会转发到多个后端处理器中的一台来处理该具体请求。
三、Nginx的主要功能
3.1 请求转发
Nginx类似于“接线员”
3.2 负载均衡
3.3 动静分离
我们需要分文件类型来进行过滤,比如jsp直接给tomcat处理,因为nginx并不是servlet 容器,没办法处理JSP,而html,js,css这些不需要处理的,直接给nginx进行缓存即可。(动静分离充分利用各自的优势完成高性能访问)
动态资源:如JSP由Tomcat或其它WEB服务器处理。
静态资源:如图片、css、js等由nginx服务器完成。
四、Nginx的安装和启动
4.1 Windows版本
下载完成后解压至 无中文路径
。
常用的配置文件是 ./conf/nginx.conf
。查看默认监听端口。
启动Nginx:可以双击安装目录下的 nginx.exe
,第一次启动时不建议这么做,因为启动窗口会一闪而过,看不到报错信息。可以使用 cmd
来启动。
启动后,关闭DOS窗口并不会关闭Nginx,在后台运行着。(可以使用任务管理器查看、关闭)
4.2 Linux版本
下载 Linux
版本安装包。
上传至服务器(虚拟机)中,解压、配置和安装。
tar -zxvf nginx-1.20.2.tar.gz # 解压
./configure # 配置,检查环境依赖是否满足
make # 编译
make install # 安装
whereis nginx # 查询nginx的位置
cd /usr/local/nginx/ # cd到 nginx 文件夹
cd sbin/ # sbin文件夹存放nginx的启动程序
./nginx # 启动nginx
查看 nginx
的默认端口号
cd ../
cd conf/
cat nginx.conf # 查看nginx.conf文件
然后在浏览器中访问 虚拟机IP + 默认端口
若访问失败的话,很可能是虚拟机防火墙没关。要开放默认端口使外部能够访问。
【centos7虚拟机开启端口后 外部不能访问的问题】:https://blog.csdn.net/Honnyee/article/details/81535464
五、Nginx常用命令
cd /usr/local/nginx/sbin/
./nginx # 启动
./nginx -s stop # 停止
./nginx -s quit # 安全退出
./nginx -s reload # 重新加载配置文件
ps aux|grep nginx # 查看nginx进程
六、Nginx实际操作
6.1 Nginx配置文件结构
... #全局配置
events { #events配置
...
}
http { #http配置
upstream edustudy { # 负载均衡配置,默认是轮询
server 127.0.0.1:8080 weight=1; # weight是权重
server 127.0.0.1:8081 weight=1;
}
server { #server代理
listen 9001;
server_name localhost; # 通过请求头中的HOST字段,匹配到特定的server块
location / { # 9001端口下的所有请求都会被匹配到这里
proxy_pass http://edustudy; # 转发至负载均衡里
}
# www.edustudy.com/admin
location /admin {
proxy_pass
}
# 当地址中包含"eduService"时,请求会转发至 http://localhost:8085
location ~ /eduService/ {
proxy_pass http://localhost:8085;
}
}
server {
listen 9002;
server_name localhost;
}
}
参考资源:
- 知乎“Nginx是什么”:https://zhuanlan.zhihu.com/p/364588916
- B站狂神说Nginx:https://www.bilibili.com/video/BV1F5411J7vK?p=1