JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Nginx的五种基础用法及安装,学会日常应用无忧

wys521 2024-09-22 18:11:08 精选教程 20 ℃ 0 评论

Nginx作为一个高性能的web服务器,小邹的个人网站,公司的站点业务和H5网关等也基本都会用到。下面小邹就nginx的非常常用的几个功能做一些讲述和分析,学会了这几个功能,平常的开发和部署就不是什么问题了。

五大主要功能:

  • 正向代理
  • 反向代理
  • 透明代理
  • 负载均衡
  • 静态服务器
  • nginx的安装

1. 正向代理

如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

正向代理的配置:

 1server {
 2 #指定DNS服务器IP地址 
 3 resolver 114.114.114.114; 
 4 #指定代理端口 
 5 listen 8080; 
 6 location / {
 7 #设定代理服务器的协议和地址(固定不变) 
 8 proxy_pass http://$http_host$request_uri; 
 9 } 
10} 

这样就可以做到内网中端口为8080的服务器主动请求到1.2.13.4的主机上,如在Linux下可以:

1curl --proxy proxy_server:8080 http://www.taobao.com/

正向代理的关键配置:

  • resolver:DNS服务器IP地址
  • listen:主动发起请求的内网服务器端口
  • proxy_pass:代理服务器的协议和地址

2. 反向代理

如果局域网向Internet提供资源服务,让Internet上的其他客户端来访问局域网内的资源,使它们必须通过一个代理服务器来进行访问,这种服务就称为反向代理。正向代理和反向代理逻辑正好相反。

反向代理配置:

这样就可以通过a.xxx.com来访问a项目对应的网站了,而不需要带上难看的端口号。

反向代理的配置关键点是:

  • server_name:代表客户端向服务器发起请求时输入的域名
  • proxy_pass:代表源服务器的访问地址,也就是真正处理请求的服务器(localhost+端口号)。

3. 透明代理

透明代理:也叫做简单代理,意思客户端向服务端发起请求时,请求会先到达透明代理服务器,代理服务器再把请求转交给真实的源服务器处理,也就是是客户端根本不知道有代理服务器的存在。

有人说透明代理和反向代理有点像,都是由代理服务器先接受请求,再转发到源服务器。其实本质上是有区别的,透明代理是客户端感知不到代理服务器的存在,而反向代理是客户端感知只有一个代理服务器的存在,因此他们一个是隐藏了自己,一个是隐藏了源服务器。事实上,透明代理和正向代理才是相像的,都是由客户端主动发起请求,代理服务器处理;他们差异点在于:正向代理是代理服务器代替客户端请求,而透明代理是客户端在发起请求时,会先经过透明代理服务器,再达到服务端,在这过程中,客户端是感知不到这个代理服务器的。

4. 负载均衡

负载均衡:将服务器接收到的请求按照规则分发的过程,称为负载均衡。负载均衡是反向代理的一种体现。

nginx实现负载均衡有几种模式:

  • 轮询:每个请求按时间顺序逐一分配到不同的后端服务器,也是nginx的默认模式。轮询模式的配置很简单,只需要把服务器列表加入到upstream模块中即可。

下面的配置是指:负载中有三台服务器,当请求到达时,nginx按照时间顺序把请求分配给三台服务器处理。

1upstream serverList {
2 server 1.2.3.4;
3 server 1.2.3.5;
4 server 1.2.3.6;
5}
  • ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。

下面的配置是指:负载中有三台服务器,当请求到达时,nginx优先按照ip_hash的结果进行分配,也就是同一个IP的请求固定在某一台服务器上,其它则按时间顺序把请求分配给三台服务器处理。

1upstream serverList {
2 ip_hash
3 server 1.2.3.4;
4 server 1.2.3.5;
5 server 1.2.3.6;
6}
  • url_hash:按访问url的hash结果来分配请求,相同的url固定转发到同一个后端服务器处理。
1upstream serverList {
2 server 1.2.3.4;
3 server 1.2.3.5;
4 server 1.2.3.6;
5 hash $request_uri; 
6 hash_method crc32; 
7}
  • fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
1upstream serverList {
2 server 1.2.3.4;
3 server 1.2.3.5;
4 server 1.2.3.6;
5 fair;
6}

而在每一种模式中,每一台服务器后面的可以携带的参数有:

  • down: 当前服务器暂不参与负载
  • weight: 权重,值越大,服务器的负载量越大。
  • max_fails:允许请求失败的次数,默认为1。
  • fail_timeout:max_fails次失败后暂停的时间。
  • backup:备份机, 只有其它所有的非backup机器down或者忙时才会请求backup机器。

如下面的配置是指:负载中有三台服务器,当请求到达时,nginx按时间顺序和权重把请求分配给三台服务器处理,例如有100个请求,有30%是服务器4处理,有50%的请求是服务器5处理,有20%的请求是服务器6处理。

1upstream serverList {
2 server 1.2.3.4 weight=30;
3 server 1.2.3.5 weight=50;
4 server 1.2.3.6 weight=20;
5}

如下面的配置是指:负载中有三台服务器,服务器4的失败超时时间为60s,服务器5暂不参与负载,服务器6只用作备份机。

1upstream serverList {
2 server 1.2.3.4 fail_timeout=60s;
3 server 1.2.3.5 down;
4 server 1.2.3.6 backup;
5}

下面是一个配置负载均衡的示例(只写了关键配置):其中:

  • upstream:是负载的配置模块,serverList是名称,随便起
  • server_name:是客户端请求的域名地址
  • proxy_pass:是指向负载的列表的模块,如serverList
 1upstream serverList {
 2 server 1.2.3.4 weight=30;
 3 server 1.2.3.5 down;
 4 server 1.2.3.6 backup;
 5} 
 6
 7server {
 8 listen 80;
 9 server_name www.xxx.com;
10 root html;
11 index index.html index.htm index.php;
12 location / {
13 proxy_pass http://serverList;
14 proxy_redirect off;
15 proxy_set_header Host $host;
16 }
17}

5. 静态服务器

现在很多项目流行前后分离,也就是前端服务器和后端服务器分离,分别部署,这样的方式能让前后端人员能各司其职,不需要互相依赖,而前后分离中,前端项目的运行是不需要用Tomcat、Apache等服务器环境的,因此可以直接用nginx来作为静态服务器。

静态服务器的配置如下,其中关键配置为:

  • root:直接静态项目的绝对路径的根目录。
  • server_name : 静态网站访问的域名地址。
1server {
2 listen 80; 
3 server_name www.xxx.com; 
4 client_max_body_size 1024M;
5 location / {
6 root /var/www/xxx_static;
7 index index.html;
8 }
9 }

6. nginx的安装

学了这么多nginx的配置用法之后,我们需要对每一个知识点做一下测试,才能印象深刻,在此之前,我们需要知道nginx是怎么安装,下面以Linux环境为例,简述yum方式安装nginx的步骤:

  1. 安装依赖:
1//一键安装上面四个依赖
2yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  1. 安装nginx:
1yum install nginx
  1. 检查是否安装成功:
1nginx -v
  1. 启动/挺尸nginx:
1/etc/init.d/nginx start
2/etc/init.d/nginx stop
  1. 编辑配置文件:
1/etc/nginx/nginx.conf 

这些步骤都完成之后,我们就可以进入nginx的配置文件nginx.conf对上面的各个知识点,进行配置和测试了。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表