Linux环境下Nginx的安装、反向代理、负载均衡

Linux环境下安装Nginx

  • 1 什么是Nginx * 2 应用场景 * 3 nginx安装

  • 3.1 要求的安装环境 * 3.2 安装步骤 * 3.3 启动 nginx * 3.4 关闭 nginx * 3.5 重启 nginx * 3.6访问 nginx

    1 * 4 配置虚拟主机 2
  • 4.1 通过端口区分不同虚拟机 * 4.2 通过域名区分虚拟主机

    1 * 5 反向代理 2
  • 5.1 什么是反响代理 * 5.2 Nginx实现反向代理

    1 * 6 负载均衡 2

1 什么是Nginx

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

2 应用场景

  1. http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
  2. 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
  3. 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

3 nginx安装

下载nginx
点这里进入nginx官网
这里安装的版本是1.8.0
如果之前安装过,可以先删除:
在这里插入图片描述

3.1 要求的安装环境

  1. 需要安装gcc的环境。

1yum install gcc-c++ 2 3
  1. 第三方的开发包
  • PCRE

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。

1yum install -y pcre pcre-devel 2 3
  • zlib

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

1yum install -y zlib zlib-devel 2 3
  • openssl

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

1yum install -y openssl openssl-devel 2 3

3.2 安装步骤

  1. 把nginx的源码包上传到linux系统

  2. 解压缩

1tar zxf nginx-1.8.0.tar.gz -C /usr/local 2 3
  1. 使用configure命令创建一makeFile文件

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

注意:启动nginx之前,上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

1mkdir /var/temp/nginx/client -p 2 3
1mkdir /usr/local/nginx 2 3
  1. 编译

1make 2 3
  1. 安装

1make install 2 3

安装完成!
在这里插入图片描述

3.3 启动 nginx

进入sbin目录(上个图片所示目录)
启动:

1./nginx 2 3

3.4 关闭 nginx

1./nginx -s stop 2 3

推荐使用以下内容:

1./nginx -s quit 2 3

3.5 重启 nginx

  1. 先关闭再启动;

  2. 可以使用以下内容更方便:

1./nginx -s reload 2 3

3.6访问 nginx

在浏览器输入ip直接访问:
在这里插入图片描述

注意:关闭防火墙,或者开放端口

4 配置虚拟主机

就是在一台服务器启动多个网站。
如何区分不同的网站:

  1. 域名不同;
  2. 端口不同

4.1 通过端口区分不同虚拟机

Nginx的配置文件:

1/usr/local/nginx/conf/nginx.conf 2 3

在这里插入图片描述
可以配置多个server,配置了多个虚拟主机。
记得每次更改了配置文件,要重载:

1nginx -s reload 2 3

4.2 通过域名区分虚拟主机

暂留白;

5 反向代理

5.1 什么是反响代理

正向代理:
在这里插入图片描述
反向代理:
在这里插入图片描述
反向代理服务器决定哪台服务器提供服务,
返回代理服务器不提供服务器。也是请求的转发。

5.2 Nginx实现反向代理

发送请求先给nginx,nginx将请求转发给某个特定服务器的特定端口。

  1. 启动一个tomcat
  2. 将tomcat配置在nginx.conf即可

以下conf配置启用了两个tomcat:
注意:
upstream的名字对应serverproxy_pass路径;
upstream中的ip是实际的ip
server中的server_name是访问时输入的名字,可以是域名、ip等

1upstream tomcat1 { 2 server 192.168.25.148:8080; 3 } 4 server { 5 listen 80; 6 server_name www.sina.com.cn; 7 8 #charset koi8-r; 9 10 #access_log logs/host.access.log main; 11 12 location / { 13 proxy_pass http://tomcat1; 14 index index.html index.htm; 15 } 16 } 17 upstream tomcat2 { 18 server 192.168.25.148:8081; 19 } 20 server { 21 listen 80; 22 server_name www.sohu.com; 23 24 #charset koi8-r; 25 26 #access_log logs/host.access.log main; 27 28 location / { 29 proxy_pass http://tomcat2; 30 index index.html index.htm; 31 } 32 } 33 34 35

6 负载均衡

请求发送给nginx,nginx转发请求的时候,如果配置了多台服务器,默认情况下,平均分配请求数量。
1、启动多个tomcat
2、将tomcat配置在nginx.conf即可

1upstream tomcat { 2 server 192.168.136.131:8080 weight=2; 3 server 192.168.136.131:8081; 4} 5 6

如果一个服务由多条服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。
以下conf配置文件是,启动了两个tomcat,每个tomcat下部署相同的项目,用以提高并发量:
注意:weight=2 是权重,可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1

1upstream tomcat { 2 server 192.168.236.129:8080 weight=2; 3 server 192.168.236.129:8081; 4} 5 6server { 7 listen 80; 8 server_name 192.168.236.129; 9 10 #charset koi8-r; 11 12 #access_log logs/host.access.log main; 13 14 location / { 15 proxy_pass http://tomcat; 16 index index.html index.htm; 17 } 18 19 #error_page 404 /404.html; 20 21 # redirect server error pages to the static page /50x.html 22 # 23 error_page 500 502 503 504 /50x.html; 24 location = /50x.html { 25 root html; 26 } 27 28 # proxy the PHP scripts to Apache listening on 127.0.0.1:80 29 # 30 #location ~ \.php$ { 31 # proxy_pass http://127.0.0.1; 32 #} 33 34 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 35 # 36 #location ~ \.php$ { 37 # root html; 38 # fastcgi_pass 127.0.0.1:9000; 39 # fastcgi_index index.php; 40 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 41 # include fastcgi_params; 42 #} 43 44 # deny access to .htaccess files, if Apache's document root 45 # concurs with nginx's one 46 # 47 #location ~ /\.ht { 48 # deny all; 49 #} 50} 51 52

代码交流 2021