Nginx基础

目录

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负载均衡策略


1.Nginx概述

1.1Nginx介绍

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3) 代理服务器。

其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。 Nginx是由伊戈尔●赛索耶夫为俄罗斯访问量第二的Rambler .ru站点( 俄文: Pam6nep) 开发的,第一个公开版本0.1.0发布于2004年10月4日。

官网:https://nginx.org/

1.2Nginx下载安装

打开虚拟机centos,这里使用wget下载: 

  1. 安装依赖包

    yum -y install gcc pcre-devel zlib-devel openssl openss1-devel
    
  2. 下载Nginx安装包

    wget https://nginx.org/download/nginx-1.16.1.tar.gz
    
  3. 解压,安装到指定目录

    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

1.3Nginx目录结构

重点目录/文件:

  • conf/nginx. conf nginx配置文件
  • html 存放静态文件(html、 CSS、Js等)
  • logs 日志目录,存放日志文件
  • sbin/nginx 二进制脚本文件,用于启动、停止Nginx服务

想查看目录结构的话就安装tree:

yum install tree

Nginx基础_第1张图片

2.Nginx命令

2.1查看版本

cd /usr/local/nginx/sbin
./nginx -v

2.2检查配置文件正确性

./nginx -t

2.3启动、关闭防火墙、停止

启动

./nginx

或者: 

/usr/local/nginx/sbin/nginx 

Nginx基础_第2张图片

启动后查看进程:

ps -ef|grep nginx

 关闭防火墙:

systemctl stop firewalld
 

访问ip地址查看静态页面:

Nginx基础_第3张图片

停止

./nginx -s stop

或者

/usr/local/nginx/sbin/nginx -s stop

2.4重新加载配置文件

当nginx配置文件修改后,需要重新加载才能生效

./nginx -s reload

或者 

/usr/local/nginx/sbin/nginx -s reload

2.5配置环境变量,无论在哪输入命令启动nginx都可以

vim /etc/profile

在PATH加入

/usr/local/nginx/sbin:

Nginx基础_第4张图片

 重新加载文件:

source /etc/profile

然后就可以在任何目录下直接启动停止Nginx了:

3.Nginx配置文件结构

Nginx配置文件(conf/nginx.conf)整体分为三部分: .

  • 全局块:         和Nginx运行相关的全局配置
  • events块:      和网络连接相关的配置
  • http块:           代理、缓存、日志记录、虚拟主机配置

http块包括:

  • http全局块
  • server块(server全局块、location块) 

注意: http块中可以配置多个Server块,每个Server块中可以配置多个location块。Nginx基础_第5张图片

Nginx基础_第6张图片

  • worker_connections是每个进程可以处理的连接数。
  • 以后主要配置http块的内容。 

4.Nginx具体应用

4.1部署静态资源

Nginx可以作为静态web服务器来部署静态资源。静态资源指在服务端真实存在并且能够直接展示的一些文件,比如常见的

  • html页面、
  • Css文件、
  • js文件、
  • 图片、
  • 视频等资源。

相对于Tomcat, Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。 将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx安装目录下的html目录中即可。

Nginx基础_第7张图片

  • 这里服务器名称一般是域名。
  •  每次修改完配置文件一定要记得重新加载后才能生效:
    ./nginx -s reload
    

4.2反向代理

4.2.1正向代理

是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。 正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。

4.2.2反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。 用户不需要知道目标服务器的地址,也无须在用户端作任何设定。

一方面,反向代理服务器统一了访问入口,本来需要分别访问各目标服务器,现在可以只访问反向代理服务器,就可以访问到各目标服务器的资源。

另一方面,目标服务器一般是在公司内网中,客户端直接访问不到。而反向代理服务器既可以通过外网访问,又跟web服务器组成局域网,成为外网和内网的桥梁

Nginx基础_第8张图片

4.2.3反向代理配置

Nginx基础_第9张图片

反向代理实现: 

修改反向代理服务器的 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的页面效果一模一样

Nginx基础_第10张图片

反向代理多个服务器:

Nginx基础_第11张图片

4.3负载均衡

负载均衡器是基于反向代理实现的。 Nginx基础_第12张图片

早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现

  • 应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据
  • 负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理

4.3.1配置负载均衡,修改负载均衡器(反向代理服务器的)nginx/conf下的nginx.config文件

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包。

Nginx基础_第13张图片

Nginx基础_第14张图片

对比一下反向代理:

server{
    listen 82;
    server name localhost;
    location/ {
    proxy_pass http://192.168.138.101:8080; #反向代理配置,将请求转发到指定服务
    }
}

4.3.2负载均衡策略

Nginx基础_第15张图片

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

Nginx基础_第16张图片

你可能感兴趣的:(java,nginx,服务器,linux)