Nginx
nginx是什么
nginx就是一个反向代理服务器
Nginx主要是用于实现什么?
nginx主要用于反向代理、负载均衡、动静分离、高可用集群,
nginx的主要特点
nginx的主要特点就是占用内存小,访问并发高,正常并发访问可以达到5万/s
一、反向代理
说到反向代理我们就先来说下正向代理是什么
1、正向代理
正向代理就是用户想去访问服务器是不能直接访问的,必须需要客户端去配置服务器,才能进行访问,
2.反向代理
反向代理就是用户想要去访问真实服务器也是访问不到的,但他不像正向代理那样需要在客户端进行配置,只需要添加一个反向代理服务器,让用户直接去访问反向代理服务器,然后反向代理服务器帮我们去调用真实服务器,所以说客户会以为访问的服务器是真实服务器.这样可以有效的保证了真实服务器的安全性.
二、负载均衡
负载均衡是什么
把多台服务器访问压力平均分配
三、动静分离
动静分离是什么
把动态资源(JSP,Servlet)放在服务器当中,把静态资源(html,CSS,js)放在处理静态资源的静态服务器,实现动静分离
nginx在linux系统进行安装
1.第一步(下载nginx)
在官网(http://nginx.org)去下载一个nginxLinux系统版本的
2.第二步(下载其他需要关联的依赖)
下载其他需要关联的依赖(pcre,openssl,zlib,nginx)
下载并安装(pcre)
2.1.第一种方式
wget (下载网址)
2.2.第二种方式(重点)
yum -y install(下载依赖名称)
3.第三步(解压)
下载完之后放在一个专属目录下,进行解压
tar -xvf 依赖包
4.第四步(编译和检查操作)
进入依赖目录,输入./Configure进行编译和检查操作
5.第五步(编译和安装)
在依赖目录下使用make && make install 进行编译和安装
6.第六步(验证)
在依赖目录下 执行pcre-config --version 查看版本号
一般采用第二种方式,直接下载安装编译
7.第七步(安装nginx)
跟上第二开始到第五步一样的
8.第八步(启动)
在usr/目录下多出来一个local/nginx,在sbin里面是启动脚本
启动 ./nginx
一般具有防火墙,需要允许那个端口进行访问
如何查询防火墙允许访问的端口号
firewall-cmd --list-all
查询完命令之后,在ports(开发的端口号)下查看
设置开放的端口号
sudo firewall-cmd --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload
nginx在linux常用的命令
需要在/usr/local/nginx/sbin下目录输入命令
查看nginx版本号
./nginx -v
查看nginx服务状态
ps -ef | grep nginx
启动nginx
./nginx
重启nginx
./nginx -s reload
关闭nginx
./nginx -s stop
nginx在windows常用的命令
启动
start nginx
关闭
nginx -s stop
重启
nginx -s reload
nginx配置文件
在usr/local/nginx/conf/目录下的nginx.conf
打开nginx.conf配置文件
vi nginx.conf
nginx配置文件主要分为三个部分
第一部分,全局块
全局块是从开头到不包含events往上的代码称为全局块
主要会设置一些影响nginx服务器整体运行的配置指令
比如worker processes 1 代表的是nginx处理并发的数量
第二部分,events
events模块内
主要影响nginx服务器与用户的网络连接
比如 worker_connections 1024; 支持的最大连接数
第三部分,http(重点)
最主要的配置,配置虚拟服务器
http全局块 ,server块
nginx配置实例(反向代理)
1.第一步
先下载一个tomcat,放在linux系统目录下
2.第二步解压
tar -xvf tomcat名称
3.第三步(启动)
进入tomcat/bin目录 输入./startup.sh
4.第四步(检查启动状态)
去tomcat/logs日志 输入tail -f cataline.out
防火墙如果为开放端口,需开放端口
看操作往上走
5.第五步
http://ip:端口号/跳转到tomcat页面
具体步骤
在默认目录下Windows/System32/drivers/etc文件中找到HOSTS
在HOSTS里进行配置 ip + 域名
1.第一步
在nginx里,去编辑配置server.conf
编辑代码
server {
listen: 端口号;
server_name: ip地址;
localhost / {
root html;
proxy_pass 访问地址(http://ip地址:端口号);
index 首页
}
}
需求:使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001. 访问http://127.0.0.1:9001/edu/直接跳转到127.0.0.1:8080 访问http://127.0.0.1:9001/vod/直接跳转到127.0.0.1:8081
1.第一步
在系统中建立一个目录 mkdir tomcat8080 mkdir tomcat8081 用于保存多个tomcat
2.第二步
解压,安装,编译,启动 顺便把防火墙开启端口
3.第三步
去tomcat/conf/server.xml目录下 修改端口号
4.第四步
在tomcat/webapps/分别创建/edu/ 和/vod/文件 里放测试html网页
5.第五步
在nginx里的conf/nginx.conf下修改配置
修改配置
-- server {
listen 9001;
server_name ip地址
localhost ~ /edu/ {
proxy_pass 访问地址(http://ip地址:端口号);
}
}
扩展
~正则表达式 需包含你后面的路线名称 区分大小写
~*正则表达式 需包含你后面的路线名称 不区分大小写
配置负载均衡
upstream (自定义名称){
server ip:端口号(127.0.0.1:8080)
server ip:端口号(127.0.0.1:8081)
}
-- server {
listen 9001;
server_name ip地址;
localhost ~ /edu/ {
proxy_pass http://(和upstream定义的自定义名称);
}
}
负载均衡策略
轮询(默认)
权重
upstream (自定义名称){
server ip:端口号(127.0.0.1:8080) weight=比例(一般按总数10占比)
server ip:端口号(127.0.0.1:8081) weight=比例(一般按总数10占比)
}
iphash
upstream (自定义名称){
iphash;
server ip:端口号(127.0.0.1:8080)
server ip:端口号(127.0.0.1:8081)
}
第一次访问的结果是什么端口号,下次就一直是哪个端口号
fair
upstream (自定义名称){
server ip:端口号(127.0.0.1:8080)
server ip:端口号(127.0.0.1:8081)
fair;
}
根据响应时间来进行分配,谁短谁分配
nginx动静分离
1.第一步准备
在首目录下创建一个文件夹 mkdir data
在data里在创建静态资源和动态资源 mkdir www(静态) mkdir images(动态),分别存放不同资源
2.第二步
在nginx.conf配置
server {
listen 80;
server_name ip
location 路径(/www/) {
root 文件目录(/data/);
index index.html index.htm;
}
location 路径(/images/) {
root 文件目录(/data/);
autoindex on;
}
}
每次配置完都重启启动一下
面试题
nginx主要用来干什么的
nginx主要用于反向代理、负载均衡、动静分离、高可用集群,
你为什么使用nginx
nginx因为他占用内存少,支持并发能力高
正向代理和反向代理的区别
正向代理的话,客户端需要自己配置服务器,进行访问,而反向代理确不需要进行配置,
正向代理主要的是起到了保护客户的真实数据,而反向代理主要是保护了真实服务器的信息
正向代理是用户知道我想要访问的服务器是谁,反向代理是用户并不知道访问的服务器是谁