Nginx

Nginx

Nginx是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。而tomcat只支持5百并发。

1.反向代理

  1. 正向代理,需要在客户端配置代理服务器;

  2. 反向代理,客户端不需要做任何配置就可以访问,我们只需要发送请求到反向代理服务器,由反向代理服务器去选择目标服务器获取数据响应给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真实服务器的ip地址;

实质 个人理解反向代理就是nginx拦截动态请求之后转发给某个tomcat。这个在集群和分布式都可以使用这个来进行配置转发。

作用 隐藏真实的访问ip地址。我们可以看到流程图中我们访问的最多也就是公网的ip,但是具体tomcat在那个ip是不知道的,这样就能减少tomcat被攻击,提高了服务器的安全性。

2.负载均衡

将原本请求集中到单个服务器上的情况,改为配置多台服务器,然后将请求负载分发到配置的多台服务器上;

3.动静分离

  1. 传统项目是否,把静态资源 html,css,js 和 动态资源 jsp,java代码全部部署到tomcat;

  2. 动静分离 把静态资源和动态资源分开部署到不同的服务器上,通过nginx配置来区分客户端请求该去请求那台服务器;

4.安装依赖

1.下载安装所需依赖

[root@TS-01-Linux7 /]# cd /usr/src/
[root@TS-01-Linux7 src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz
[root@TS-01-Linux7 src]# wget --no-check-certificate http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz
[root@TS-01-Linux7 src]# wget http://zlib.net/zlib-1.2.11.tar.gz
[root@TS-01-Linux7 src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz

https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz 失败直接在浏览器下载;

2.解压pcre依赖

2.1 解压 pcre

[root@TS-01-Linux7 src]# tar -xvf pcre-8.40.tar.gz 

2.2 进入解压之后的目录,执行 ./configure 命令

2.3 没有异常在当前目录下执行下面命令

2.4 make && make install

3.安装其他的依赖

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

5.安装Nginx

  1. 解压 nginx
[root@TS-01-Linux7 src]# tar -xvf nginx-1.20.2.tar.gz 
  1. 进入解压目录 cd nginx-1.20.2,执行命令 ./configure

  2. 执行命令 make && make install

  3. 成功后,会在/usr/local/ 下生产目录

    Nginx

  4. 开启 nginx

    [root@TS-01-Linux7 sbin]#  -ef | grep nginx
    
  5. 查看 nginx 进程,证明安装ok

    Nginx

  6. 进入 conf 目录下,打开 nginx.conf,可以在我们本机访问,访问失败的可以关闭防火墙或者开放端口在访问

    firewall-cmd --zone=public --add-port=80/tcp --permanent 开放80端口

    firewall-cmd --reload 重启防火墙

Nginx

Nginx

6.Nginx常用命令

使用Nginx命令必须进入Nginx的目录下 /usr/local/nginx/sbin

  1. 查看nginx版本号

    [root@TS-01-Linux7 sbin]# ./nginx -v
    nginx version: nginx/1.20.2
    
  2. 启动nginx

    [root@TS-01-Linux7 sbin]# ./nginx
    [root@TS-01-Linux7 sbin]# ps -ef | grep nginx
    root       7944      1  0 09:49 ?        00:00:00 nginx: master process ./nginx
    nobody     7945   7944  0 09:49 ?        00:00:00 nginx: worker process
    root       7947   7907  0 09:49 pts/0    00:00:00 grep --color=auto nginx
    
  3. 关闭nginx

    [root@TS-01-Linux7 sbin]# ./nginx -s stop	
    [root@TS-01-Linux7 sbin]# ps -ef | grep nginx
    root       7941   7907  0 09:48 pts/0    00:00:00 grep --color=auto nginx
    
  4. 重新加载nginx

    [root@TS-01-Linux7 sbin]# ./nginx -s reload
    

7.Nginx配置文件

Nginx配置文件由三部分组成

1.全局块

设置一些影响 nginx 服务整体运行的配置指令,主要包括配置运行 nginx 服务器的用户(组),允许生产的 worker process 数,进程 Pid 存放路径,日志存放路径和类型以及配置文件的引入等;

Nginx

worker_processes 的值越大支持的并发量也越多

2.events块

设置影响服务器与用户网络连接,常用的设置包括是否开启对多 worker process 下的网络链接,是否允许接收多个网络连接,每个 woker process 可以同时支持的最大连接数等;

Nginx

默认配置,表示每个 worker process 支持的最大连接数为 1024

3.http块

http 全局块配置的指令包括文件引入,MIME-TYPE 定义,日志自定义,连接超时时间,单连接请求数上限等;

Nginx

8.Nginx配置-实例1-反向代理

:访问 nginx 代理地址,跳转到我们 linux 安装的 tomcat8080 页面

  1. 给 nginx 准备域名映射 ip 地址

Nginx

  1. 修改 nginx 配置文件 将 IP 改为上图解析的 IP, 添加映射 IP

    Nginx

  2. 如果是在 nginx 开的时候修改的

    ps -A | grep nginx 查看进程

    kill -9 pid 杀掉进程,重启

  3. 访问域名,成功跳转到 tomcat 8080 页面

    Nginx

9.Nginx配置-实例2-反向代理

:Nginx 监听 9001 端口:

  • 访问 127.0.0.1:9001/edu/ 跳转到 127.0.0.1:8080

  • 访问 127.0.0.1:9001/vod/ 跳转到 127.0.0.1:8081

Nginx

10.Nginx配置-实例-负载均衡

:访问 同一个 路径,负载均衡效果,将请求平均分发到 8080 和 8081 服务器上;

Nginx

Nginx

Nginx

11.Nginx的分配策略

1.轮询 (默认)

每个请求按照时间顺序逐一分配到不同的服务器上,如果后端服务器宕机了,就剔除掉;

2.weight (权重)

weight 默认权重1,权重越高被分配的客户端就越多

# 负载均衡配置参数
upstream myserver {
    server ip:8080 weight=10;
    server ip:8081 weight=5;
}

3.ip_hash

每个请求按访问 ip 的 hash 结果分配,这样每个访客访问固定一个后端服务器,可以解决 session 的问题;

# 负载均衡配置参数
upstream myserver {
    ip_hash;
    server ip.128:8080;
    server ip:8081;
}

4.fair

按照后端服务器的响应时间来分配请求,响应时间短的优先分配;

# 负载均衡配置参数
upstream myserver {
    server ip:8080;
    server ip:8081;
    fair;
}

12.Nginx配置-实例-动静分离

常用的方式把静态资源文件独立成单独的域名,放在独立的服务器上,另外一种把静态和动态资源混合放在一起,通过 Nginx 来分开;

实例:让 Nginx 分别指向不同的资源

    location /www/ {
        root  /data/;
        index index.html index.htm;
        expires; // 设置缓存时间
    }

    location /img/ {
        root  /data/;
        autoindex  on;
    }
上一篇:photoshop 合成坐在圆窗上的美女


下一篇:PHP+MYSQL 出现乱码的解决方法