一、nginx的安装、启动、查看
# 安装nginx
yum install nginx -y
# 启动nginx
systemctl start nginx
# 查看nginx状态
systemctl status nginx
# 查看nginx服务端口状态
netstat -antp
# 查看nginx进程状态
ps -aux | grep nginx
二、nginx的作用和配置文件
nginx主要功能有:web服务器、反向代理、负载均衡、动静分离、高可用集群(这里不做介绍)
所有实现都依赖于对nginx配置文件的配置
① 第一部分 全局块:从配置文件开始到 events 块之间的内容,设置影响 nginx 服务器整体运行的配置指令,包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数、进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。
② 第二部分 events块:影响 Nginx 服务器与用户的网络连接,支持的最大连接数为 1024,需灵活配置
③ 第三部分 http块:nginx实现的主要功能都是在这里进行配置
# 第一部分
user nginx;
# 并发处理的配置,worker_processes 值越大,可以支持的并发处理量也越多,受到硬件、软件的制约
worker_processes 1;
include /usr/share/nginx/modules/*.conf;
# 第二部分
events {
worker_connections 1024;
}
# 第三部分
http {
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
server_name _;
include /etc/nginx/default.d/*.conf;
location / {
}
}
}
三、nginx反向代理
3.1 正向代理:最直观的例子是下图这种情况
3.2 反向代理:将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据返回给客户端
3.3 nginx反向代理配置
案例一
在/usr/local下安装tomcat并启动,在8080端口访问
配置反向代理,在/etc/nginx/conf.d/*.conf下添加一个自定义配置文件,重启nginx
server{
listen 80;
server_name 主机IP地址;location / {
proxy_pass http://127.0.0.1:8080;
index index.html index.php index.jsp index.htm;
}
}
访问80端口如下
案例二
① 在/usr/local下安装两个tomcat并启动,监听端口为8080、8090
② 在两个tomcat的webapps目录下新建页面
vim /usr/local/tomcat7/webapps/serve1/test.html
<h1> serve1 port 8080</h1>
vim /usr/local/tomcat7/webapps/serve2/test.html
<h1> serve1 port 8090</h1>
分别访问两个站点
③ 实现的效果和配置:配置nginx反向代理,不同访问路径转发到不同端口的tomcat
访问 http://IP:9001/serve1/ 直接跳转到 http://IP:8080
访问 http://IP:9001/serve2/ 直接跳转到 http://IP:8090
在/etc/nginx/conf.d/*.conf下添加一个自定义的配置文件 vim /etc/nginx/conf.d/mynginx.conf
server {
listen 9001;
server_name localhost;location ~ /serve1/ {
proxy_pass http://localhost:8080;
}location ~ /serve2/ {
proxy_pass http://localhost:8090;
}
}
④ 重启nginx、通过nginx监听的9001端口访问测试
systemctl restart nginx
netstat -anpt | grep java
netstat -anpt | grep nginx
四、nginx实现负载均衡
4.1 准备两个tomcat,监听端口为8080、8090
4.2 配置负载均衡,添加自定义而配置文件
upstream mytest{
server IP:8080;
server IP:8090;
}server {
listen 9001;
server_name IP;location / {
proxy_pass http://mytest;
}
}
4.3 访问同一个地址,nginx将访问平均分配给两台tomcat响应
4.4 nginx分配策略,4种分配策略
① 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除
② weight:默认为 1,权重越高被分配的客户端越多。例如下边配合,访问8080一次,访问8090三次
upstream mytest{
server IP:8080 weight=1;
server IP:8090 weight=3;
}
③ ip_hash:每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题,示例如下
upstream mytest{
ip_hash;
server IP:8080;
server IP:8090;
}
④ fair(我测试失败了):按后端服务器的响应时间来分配请求,响应时间短的优先分配,示例如下
upstream mytest{
#ip_hash;
server IP:8080;
server IP:8090;
fair;
}
五、nginx实现动静分离(前后端分离转发)
5.1 在根目录下新建static文件夹,放静态图片
5.2 在tomcat的webapps目录下新建测试页,在8080端口启动tomcat
5.3 在nginx配置文件夹下新建配置文件mynginx.conf,内容如下server块
vim /etc/nginx/conf.d/mynginx.conf
server {
listen 9001;
# 当接收到http请求时,首先host和这里的server_name进行匹配,如果匹配上,则走这个虚拟主机的location路由
server_name IP;# 静态资源转发
location ~*\.(gif|jpg|jpeg|bmp|png|ico)$ {
# 所有括号中包括的静态文件直接读取根目录下static文件夹
root /static/;
# 缓存30天
expires 30d;
}# 其他的url则转发到 http://IP:8080
location / {
proxy_pass http://IP:8080;
}
}
5.4 测试
访问后端tomcat中的页面(或者后端动态资源)
访问静态资源(前端静态资源)