Nginx----反向代理
简介
Nginx介绍
Nginx是一款轻量级的web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并
发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、
新浪、网易、腾讯、淘宝等。
安装过程:(在虚拟机上)
1、安装依赖包 yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
2、下载Nginx安装包wget https://nginx.org/download/nginx-1.16.1.tar.gz
3、解压 tar -zxvf nginx-1.16.1.tar.gz
4. cd nginx-1.16.1
5. ./configure -- prefix=/usr/local/nginx
6. make && make install
重点文件
| 重点目录/文件: | |
| . conf/nginx.conf | nginx配置文件 |
| · html | 存放静态文件(html、CSS、Js等) |
| · logs | 日志目录,存放日志文件 |
| · sbin/nginx | 二进制文件,用于启动、停止Nginx服务 |
常用命令
查看版本
./nginx -v(在nginx的sbin文件下执行)
检查配置文件正确性
./nginx -t(在nginx的sbin文件下执行)
启动和停止
启动:./nginx(还是在sbin目录下)
配置好文件后可以直接使用(不用再某个特定目录下): nginx
拓展:如何配置/usr/local/nginx/sbin目录使得再任何目录下都能启动nginx
执行:vim /etc/profile
修改:PATH=/usr/local/nginx/sbin:$JAVA_HOME/bin:$PATH(加上一个/usr/local/nginx/sbin即可,注意要和Java的路径用:隔开)
查看nginx进程
命令:ps -ef | grep nginx
停止:
命令:./nginx -s stop
重新加载配置文件命令:
./nginx -s reload
配置文件结构:

Nginx具体应用
部署静态资源
Nginx可以作为静态的web服务器来部署静态资源。静态资源是指在服务器端真实存在并且能够直接展示的一些文件。比如常见的html文件,css文件,js文件,图片,视频等资源。
相对于tomcat,nginx处理静态资源的能力更加高效,在生产环境下,一般将静态资源部署到nginx中。
将静态资源部署到nginx中非常简单:只需要将文件复制到nginx安装目录下的html目录中即可。
放在这里

还需要再修改nginx/conf/nginx.conf(nginx的配置文件)
默认首页可以配置多个

反向代理
拓展:
正向代理(用户端给请求,用户知道有一个正向代理服务器)
是一个位于客户端和原始服务器之前的服务器,为了从原始服务器获取内容,客户端向代理发送一个请求并指定一个目标(原始服务器),然后代理向原始服务器转交请求并将获得内容返回给客户端。
正向代理的典型用途是为再防火墙的局域网客户端提供访问Internet的途径。
正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。

反向代理(用户端直接访问,用户不知道有一个反向代理服务器)
(服务器可能有多个,用户直接访问不太好管理,使用反向代理可以同时管理)
(web服务器在公司的内网中,永固不能直接访问,反向代理服务器是对外开放的,并且他与web服务器组成局域网)
反向代理服务器位于用户和目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。用户不需要知道目标服务器的地址,也无需再用户端做任何设定。

配置反向代理(修改conf/nginx.conf文件)

负载均衡
早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越
大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群
进行性能的水平扩展以及避免单点故障出现。
应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据
负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理

配置(修改conf/nginx.conf文件)

均衡策略:()
轮询 | 默认方式 |
weight | 权重方式 |
ip_hash | 依据ip分配方式 |
least_conn | 依据最少连接方式 |
Url_hash | 依据url分配方式 |
fair | 依据响应时间方式 |
例如:
upstream targetserver{
server 192.168.217.130:8080 weight=10;
server 192.168.217.130:8081 weight=5;
}
轮询
upstream targetserver{
server 192.168.217.130:8080;
server 192.168.217.130:8081;
}
Nginx与Tomcat对比
1. Nginx 的功能和定位
核心身份:Web 服务器 & 反向代理服务器
主要功能:
静态内容服务
直接处理 HTML、CSS、JavaScript、图片、视频等静态文件
性能极高,并发能力很强
反向代理
接收客户端请求,然后转发给后端的应用服务器(如 Tomcat)
对客户端隐藏后端服务器的真实信息
负载均衡
nginx
upstream backend {
server 192.168.1.10:8080 weight=3; # 权重 3
server 192.168.1.11:8080 weight=1; # 权重 1
}
将请求分发到多个后端服务器,提高系统处理能力
SSL 终端
处理 HTTPS 加密解密,减轻后端服务器压力
配置 SSL 证书在 Nginx 层面完成
缓存
缓存后端应用的响应结果
相同请求直接返回,不访问后端
高并发处理
使用事件驱动模型,单机可处理数万并发连接
2. Tomcat 的功能和定位
核心身份:Servlet 容器 & Java Web 应用服务器
主要功能:
Servlet/JSP 容器
执行 Java Servlet 和 JSP 页面
提供 Java Web 应用运行环境
Java EE Web Profile 支持
支持 Servlet、JSP、EL、WebSocket 等规范
运行基于 Java 的 Web 应用程序
应用部署和管理
部署 WAR 包格式的 Java Web 应用
提供应用生命周期管理
会话管理
管理用户会话(HttpSession)
支持会话持久化、集群会话复制
数据库连接池
管理数据库连接,提高数据库访问效率


