Nginx

Nginx(反向代理)

场景需求

  
  原来是1w个访问要去使用tomcat会导致并发太高,然后我们可以通过多开Tomcat服务器从而来分担。所以引入了nginx来分配tomcat。这种方式也叫做反向代理

Nginx概述

  
  Nginx是一款高性能http服务器/反向代理服务器/电子邮件(IMAP/POP3)代理服务器。官方测试nginx能支撑5w的并发连接,而且cpu和内存等资源消耗比较低。

应用场景

1. 网页静态服务器

2. 动态服务器(部署在tomcat里面,通过nginx反向代理搭建集群)

3. 虚拟主机(可以实现一台服务器虚拟出多个网站)

4. 反向代理和负载均衡 


Nginx安装

环境准备

1. 安装gcc环境(之前redis安装就已经安装好了)

1
yum install gcc-c++

2. 安装第三方的开发包(PCRE zlib Openssl)

1
2
3
yum install -y pcre pcre-devel
yum install -y zlib-devel
yum install -y openssl openssl-devel
  • PCRE
    PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。

  • zlib
    zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。

  • OpenSSL
    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。

上传解压

3. 通过rz 上传nginx文件并且tar -zxvf解压

4. 当面目录下输入以下文字 会生成makeFile文件

1
2
3
4
5
6
7
8
9
10
11
12
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

5. 执行make指令编译 执行make install指令下载


Nginx启动

启动步骤

1. mkdir /var/temp/nginx/client -p 创建子目录

2. 进入到Nginx目录下的sbin目录 然后执行nginx即可

3.打开nginx之后浏览器打开(直接输入linux里面的ip地址)

4.通过 ps aux|grep nginx 查看进程

其他操作指令(目录站在nginx/sbin里面)

1
2
3
4
5
6
7
1. 启动Nginx   ./nginx

2. 查看进程 ps aux|grep nginx

3. 关闭Nginx ./nginx -s stop // ./nginx -s quit

4. 重启Nginx 1.先关闭后启动 2.刷新配置文件 ./nginx -s reload

静态资源部署

更改nginx/conf/nginx.conf配置文件

通过EditPlus5去进行设置ftp

1. 打开文件-FTP-设置FTP服务器-然后输入信息

2. 根据左上角目录去找左下角对应的目录文件然后右边更改

3. 每次更新之后弹窗选择确定就可以提交更新

4. 更改后的信息解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {
listen 80;
server_name localhost;


location / {
root index;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

}

准备好index文件复制到nginx目录下

1.使用FileZilla软件也可以使用ftp上传

2.更改nginx.conf配置里面的root

3. 重启nginx之后(./nginx -s reload)浏览器打开就自动跳转到了index页面


虚拟主机-端口绑定

配置文件解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {
listen 81; # 默认端口号码
server_name localhost; # 写的是域名或者ip地址配置


location / {
root index; # 默认访问资源的目录
index index.html index.htm; # 默认访问资源名称
}

error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html {
root html;
}
}

server {
listen 82;
server_name localhost;

location / {
root regist;
index regist.html;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

往linux再上传需要的静态网页文件

1.还是跟之前一样通过filezilla软件上传到nginx文件下面

2.通过浏览器(记得输入不同的端口号)即可

总结

1
2
其实就是刚才的静态资源配置多配置一个server{} 然后要多有一个端口(我一个是81/一个是82)
然后就可以通过IP地址+不同的端口就可以进行访问

配置文件内部需要增加一个server{}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

server {
listen 82;
server_name localhost;

location / {
root regist;
index regist.html;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

虚拟主机 域名绑定

举例

1.按上面81和82端口的例子:去hosts文件加一个域名绑定

2.我们就可以通过www.ceshi.com然后加上端口访问

更改server里的server_name

我们就可以通过www.ceshi.com然后加上端口访问


反向代理

正向代理(针对客户端)

需求:学生通过主机去找网络连接(VPN)

反向代理(针对服务器端)

需求:通过网络去找部署在linux上的tomcat服务器
    1. 直接访问:tomcat并发低(负载大)
    2. 反向代理:搭建tomcat集群,出现反向代理服务器。由服务器分发到tomcat去,还可以增加在给tomcat时候防火墙提高安全性

反向代理准备

1.将需要的项目打包成war上传(rz)到tomcat的webapps目录下

2.执行tomcat/bin里面的startup.sh 能够通过浏览器打开即可

配置反向代理

1.修改Nginx配置(server{}之前写)

1
2
3
	upstream tomcat-travel{
server 192.168.209.128:8080; # tomcat浏览器的地址配给nginx
}

2.修改nginx.conf配置

1
2
3

1. 将server{}里面的root index注释掉
2. 在下面加 proxy_pass http://tomcat-travel; # tomcat-tarvel可以随便起

3.访问

1
2
3
1. 浏览器输入:server里面的server_name(一般是localhost 但是也可以通过绑定域名(hosts文件改))
2. 然后他这个网络internet会去找nginx代理主机(proxy_pass)
3. 代理主机就去找upstream里面的tomcat

总结

1. 之前的演示:将静态网页直接放在nginx文件夹下 我们通过配置server{}端口和域名然后直接从浏览器访问到了tomcat
2. 反向代理:
    2.1 准备:
        项目打包成war文件放在tomcat/webapps里面 然后通过在nginx配置文件加upstream和更改掉访问的root index 从而加proxy_pass达到功能
    2.2 访问:
        现在就是浏览器写server里面的域名 -->  因为nginx里面配备了proxy_pass所以会到nginx --> http://后面的会去找upstream里面的tomcat -->  从而反向回来反馈到浏览器。
3. 总结:
     因为域名输入后他不知道到底是nginx还是tomcat给的回应,所以后面的两个相当于封装起来提供了安全性

访问时候的分析:


负载均衡

我们搭建很多的tomcat形成tomcat集群(使得nginx寻找的几率相等)

1.需要很多linux机器上拥有tomcat(演示时候是一台linux放三个tomcat)

2.(将tomcat文件复制两份然后依次进去更改其他两个的端口)

3.启动每个linux的tomcat(启动三个tomcat服务器)

4.然后每个linux上的nginx配置反向代理(更改nginx配置文件内部upstream加server(因为端口不一样))

5.通过访问器访问就会不同几率的访问不同的tomcat(配置文件里面可以改浏览器title名称来区别)


×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. Nginx(反向代理)
    1. 1.1. 场景需求
    2. 1.2. Nginx概述
  2. 2. 应用场景
  3. 3. Nginx安装
    1. 3.1. 环境准备
    2. 3.2. 上传解压
  4. 4. Nginx启动
    1. 4.1. 启动步骤
    2. 4.2. 其他操作指令(目录站在nginx/sbin里面)
  5. 5. 静态资源部署
    1. 5.1. 更改nginx/conf/nginx.conf配置文件
    2. 5.2. 准备好index文件复制到nginx目录下
  6. 6. 虚拟主机-端口绑定
    1. 6.1. 配置文件解析
    2. 6.2. 往linux再上传需要的静态网页文件
    3. 6.3. 总结
  7. 7. 虚拟主机 域名绑定
    1. 7.1. 举例
    2. 7.2. 更改server里的server_name
  8. 8. 反向代理
    1. 8.1. 正向代理(针对客户端)
    2. 8.2. 反向代理(针对服务器端)
    3. 8.3. 反向代理准备
    4. 8.4. 配置反向代理
    5. 8.5. 总结
  9. 9. 负载均衡
,