目录
1.Nginx概述
1.1Nginx介绍
1.2Nginx下载安装
1.3Nginx目录结构
2.Nginx命令
2.1查看版本
2.2检查配置文件正确性
2.3启动、关闭防火墙、停止
2.4重新加载配置文件
2.5配置环境变量,无论在哪输入命令启动nginx都可以
3.Nginx配置文件结构
4.Nginx具体应用
4.1部署静态资源
4.2反向代理
4.2.1正向代理
4.2.2反向代理
4.2.3反向代理配置
4.3负载均衡
4.3.1配置负载均衡,修改负载均衡器(反向代理服务器的)nginx/conf下的nginx.config文件
4.3.2负载均衡策略
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3) 代理服务器。
其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。 Nginx是由伊戈尔●赛索耶夫为俄罗斯访问量第二的Rambler .ru站点( 俄文: Pam6nep) 开发的,第一个公开版本0.1.0发布于2004年10月4日。
官网:https://nginx.org/
打开虚拟机centos,这里使用wget下载:
安装依赖包
yum -y install gcc pcre-devel zlib-devel openssl openss1-devel
下载Nginx安装包
wget https://nginx.org/download/nginx-1.16.1.tar.gz
解压,安装到指定目录
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
mkdir -p /usr/local/nginx
./configure --prefix=/usr/local/nginx
make && make install
如果第二步wget提示找不到命令,就安装wget:
yum install wget
重点目录/文件:
conf/nginx. conf
nginx配置文件html
存放静态文件(html、 CSS、Js等)logs
日志目录,存放日志文件sbin/nginx
二进制脚本文件,用于启动、停止Nginx服务想查看目录结构的话就安装tree:
yum install tree
cd /usr/local/nginx/sbin
./nginx -v
./nginx -t
启动
./nginx
或者:
/usr/local/nginx/sbin/nginx
启动后查看进程:
ps -ef|grep nginx
关闭防火墙:
systemctl stop firewalld
访问ip地址查看静态页面:
停止
./nginx -s stop
或者
/usr/local/nginx/sbin/nginx -s stop
当nginx配置文件修改后,需要重新加载才能生效
./nginx -s reload
或者
/usr/local/nginx/sbin/nginx -s reload
vim /etc/profile
在PATH加入
/usr/local/nginx/sbin:
重新加载文件:
source /etc/profile
然后就可以在任何目录下直接启动停止Nginx了:
Nginx配置文件(conf/nginx.conf)整体分为三部分: .
http块包括:
- worker_connections是每个进程可以处理的连接数。
- 以后主要配置http块的内容。
Nginx可以作为静态web服务器来部署静态资源。静态资源指在服务端真实存在并且能够直接展示的一些文件,比如常见的
相对于Tomcat, Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。 将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx安装目录下的html目录中即可。
- 这里服务器名称一般是域名。
- 每次修改完配置文件一定要记得重新加载后才能生效:
./nginx -s reload
是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。 正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。 用户不需要知道目标服务器的地址,也无须在用户端作任何设定。
一方面,反向代理服务器统一了访问入口,本来需要分别访问各目标服务器,现在可以只访问反向代理服务器,就可以访问到各目标服务器的资源。
另一方面,目标服务器一般是在公司内网中,客户端直接访问不到。而反向代理服务器既可以通过外网访问,又跟web服务器组成局域网,成为外网和内网的桥梁。
反向代理实现:
修改反向代理服务器的 nginx/conf下的nginx.config文件
server{
listen 82;
server name localhost;
location/ {
proxy_pass http://192.168.138.101:8080; #反向代理配置,将请求转发到指定网址的服务器
}
}
现在访问http://192.168.138.100:82和http://192.168.138.101:8080的页面效果一模一样
反向代理多个服务器:
早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。
upstream targetserver{ #upstream指令可以定义一组服务器。默认是轮询算法,即几个服务器轮流工作
server 192.168.138.101:8080; #部署代码,服务器1
server 192.168.138.101:8081; #部署代码,服务器2
}
server {
listen 8080; //负载均衡器
server_name localhost;
location/ {
proxy_pass http://targetserver; #之后所有请求就会分发到上面upstream定义的targetserver的服务器集群中
}
访问当前服务器的8080端口(server里定义的),不断刷新,会发现8080和8081轮流展示:
注意:192.168.138.101服务器运行了两个不同的springboot的jar包。
对比一下反向代理:
server{ listen 82; server name localhost; location/ { proxy_pass http://192.168.138.101:8080; #反向代理配置,将请求转发到指定服务 } }
ip_hash:根据客户端ip地址算出一个哈希值,分发到某台服务器上。保证同一个ip分发到的服务器是固定的。
least_conn:优先把请求分发给客户端连接数最少的服务器。
url_hash:根据请求地址算出哈希值,分发到某台服务器上。保证同一个url地址分发到的服务器是固定的。
fair:优先把请求分发给响应时间短的服务器。
权重方式,2:1的权重:
upstream targetserver{ #upstream指令可以定义一组服务器
server 192.168.138.101:8080 weight=10; #部署代码,服务器1
server 192.168.138.101:8081 weight=5; #部署代码,服务器2
}
server {
listen 8080; //负载均衡器
server_name localhost;
location/ {
proxy_pass http://targetserver;
}
测试
不断刷新,可以发现8080和8081出现的比例大概是2:1