带你了解什么是Nginx(实操反向代理-负载均衡)

一.前言

①什么是Nginx?

Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯
的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且
cpu、内存等资源消耗却非常低,运行非常稳定。
Nginx 应用场景:
1、http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要
用多台服务器集群可以使用 nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务
器负载高宕机而某台服务器闲置的情况。

②服务中为什么要使用Nginx原因?


Α•在传统的Web项目中,并发量小,用户使用的少。所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户。比如,我们上传图片:
Β•为了解决并发高、用户多,可以使用负载均衡:也就是我们多增加几个tomcat服务器。当用户访问的时候,请求可以提交到空闲的tomcat服务器上。
但可能会出现一种情况,上传图片操作。我们把图片上传到了tomcat1上了,当我们要访问这个图片的时候,tomcat1正好在工作,所以访问的请求就交给其他的tomcat操作,而tomcat之间的数据没有进行同步,所以就发生了我们要请求的图片找不到。
C•于是为了解决这种情况,我们就想出了分布式。我们专门建立一个图片服务器,用来存储图片。这样当我们都把图片上传的时候,不管是哪个服务器接收到图片,都把图片上传到图片服务器。
图片服务器上需要安装一个http服务器,可以使用tomcat、apache、nginx。

当然我们也有疑问,为什么不使用tomcat,而使用nginx?

nginx常用做静态内容服务和代理服务器(不是你FQ那个代理),直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java web app跑在里面的东西,对应同级别的有jboss,jetty等东西。
但是事无绝对,nginx也可以通过模块开发来提供应用功能,tomcat也可以直接提供http服务,通常用在内网和不需要流控等小型服务的场景。
apache用的越来越少了,大体上和nginx功能重合的更多。
严格的来说,Apache/Nginx 应该叫做「HTTP Server」;而 Tomcat 则是一个「Application Server」,或者更准确的来说,是一个「Servlet/JSP」应用的容器(Ruby/Python 等其他语言开发的应用也无法直接运行在 Tomcat 上)。
一个 HTTP Server 关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代理、负载均衡等功能。客户端通过 HTTP Server 访问服务器上存储的资源(HTML 文件、图片文件等等)。通过 CGI 技术,也可以将处理过的内容通过 HTTP Server 分发,但是一个 HTTP Server 始终只是把服务器上的文件如实的通过 HTTP 协议传输给客户端。
而应用服务器,则是一个应用执行的容器。它首先需要支持开发语言的 Runtime(对于 Tomcat 来说,就是 Java),保证应用能够在应用服务器上正常运行。其次,需要支持应用相关的规范,例如类库、安全方面的特性。对于 Tomcat 来说,就是需要提供 JSP/Sevlet 运行需要的标准类库、Interface 等。为了方便,应用服务器往往也会集成 HTTP Server 的功能,但是不如专业的 HTTP Server 那么强大,所以应用服务器往往是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到客户端。
一句话来说,就是nginx大众化,更加好用。

二.安装Nginx

1.介绍

本章以Linux系统安装nginx为主来讲解,当然也可以Windows下安装Nginx进行安装测试应用。
没有安装Linux的,请点击安装虚拟机安装详细教程进行了解。

2.安装

①在Linux系统安装nginx

下载安装包nginx:官网:http://nginx.org/ ,然后点击“download
在这里插入图片描述

在下载界面选择自己想要下载的版本,点击对应版本,下载Nginx。
在这里插入图片描述

②上传并解压到/usr/local/目录下

在这里插入图片描述

虚拟机操作有点不方便,我通过MobaXterm进行连接来操作。
在这里插入图片描述

也可以直接使用命令

wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar -zxvf nginx-1.22.1.tar.gz        ---解压nginx安装包
③安装环境并启动

⑴需要安装依赖包

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

⑵进入nginx-1.22.1目录,使用configure命令创建一 makeFile文件

./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

(可以复制粘贴!注意格式!!!)
⑶编译 — 用来编译( 从Makefile中读取指令,然后编译)

make

⑷安装— 用来安装( 从Makefile中读取指令,安装到指定的位置)

make install

⑸新建目录:

mkdir /var/temp/nginx/client -p

⑹编辑启动端口(图片的端口是经过修改的,默认是80端口)
—i进行编辑, 编辑好之后,按esc退出编辑模式,然后 :wq 进行保存退出

cd /usr/local/nginx/conf

vim nginx.conf

在这里插入图片描述

注意:需要查看是否开放此端口,若无,此处需要关闭防火请,放开端口权限,再重新启动防火墙
在这里插入图片描述

放开权限:编辑文件iptables
在这里插入图片描述

⑺启动nginx

cd /usr/local/nginx/sbin
./nginx
 
查看是否启动成功命令:ps -ef | grep nginx
 
注意:如果你是在阿里云服务器部署(有的人在自己的vmwar虚拟机里面部署),
那么就要登陆阿里云服务器,上防火墙一列开放你的nginx启动端口,否则访问不了!!!

然后通过 ip:端口,就能看到是否启动成功。
在这里插入图片描述

⑻Nginx其他命令
关闭nginx

./nginx -s stop
--- 或者
./nginx -s quit

重启nginx

./nginx -s reload

⑼简单的vue项目部署-打包后的vue项目,然后上传到目录:/usr/local/nginx/html
在这里插入图片描述
在这里插入图片描述

三、Nginx虚拟主机端口与域名映射

虚拟主机端口映射

需要在路径:/usr/local/nginx ,新建一个文件夹自定义webnginx(与html同级),放入打包后的vue项目
在这里插入图片描述
在这里插入图片描述

如何同时启动这两个项目?

停止./nginx -s stop,修改nginx.conf文件配置,然后重新启动./nginx 即可
在这里插入图片描述
在这里插入图片描述

效果图

8089端口
在这里插入图片描述

8088端口
在这里插入图片描述

虚拟主机域名映射

修改 C:\Windows\System32\drivers\etc 目录中的 hosts

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

效果图

在这里插入图片描述
在这里插入图片描述

四、Nginx反向代理与负载均衡

1. 正向代理:

正向代理类似一个跳板机,代理访问外部资源
比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了
正向代理的用途:
(1)访问原来无法访问的资源,如google
(2) 可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

2. 反向代理:

反向代理(Reverse Proxy)实际运行方式是指以代理服务器(proxy)来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
反向代理的作用:
(1)保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网(中国大陆使用 nginx 网站用户有:百度、京东、新浪、网易、腾讯、 淘宝等)
(2)负载均衡,通过反向代理服务器来优化网站的负载

3. 总结:

正向代理即是客户端(client)代理, 代理客户端, 服务端不知道实际发起请求的客户端。(VPN访问谷歌)
反向代理即是服务端(server)代理, 代理服务端, 客户端不知道实际提供服务的服务端。(美团外卖就相当于反向代理服务端,)
在这里插入图片描述

配置反向代理

1、需要添加个新地址 www.yuan.com ; 修改 C:\Windows\System32\drivers\etc 目录中的 hosts
2、tomcat部署启动 参考链接 11.Linux 环境中安装并配置 Tomcat
3、停止./nginx -s stop,修改nginx.conf文件配置,然后重新启动./nginx 即可
在这里插入图片描述

效果图

在这里插入图片描述
在这里插入图片描述

配置反向代理与负载均衡:(复制 3 个 tomcat,分别配置不同的端口号!)

1、使用命令复制两个tomcat
在这里插入图片描述

cp -r apache-tomcat-7.0.52 tomcat2

2、需要修改 路径下/usr/local/tomcat2/conf/ 和/usr/local/tomcat3/conf/ 下的server.xml的端口号
例如:tomcat2 修改为8580、tomcat3修改为8680
在这里插入图片描述

3、部署一下html,路径下/usr/local/tomcat2:3/webapps/ROOT/ 的index.html,例如:

<h1>nginx-tomcat3-8680!!!</h1>

4、分别启动tomcat2、tomcat3;启动 Tomcat: 进入 tomcat 的 bin 下启动:./startup.sh 进入 tomcat 的
bin 下关闭:./shutdown.sh 使用 tail 命令查看日志。
5、停止./nginx -s stop,修改nginx.conf文件配置,然后重新启动./nginx 即可
在这里插入图片描述

注意:端口号一定要开放,命令

--- 进入跟目录 
cd /
--- 关闭防火墙
/etc/init.d/iptables stop
--- 添加端口号
vi /etc/sysconfig/iptables
--- 重启防火墙
/etc/init.d/iptables restart
--- 查看端口列表
service iptables start
service iptables status
效果图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

nginx.conf文件配置内容
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

	#虚拟主机域名映射
    server {
        listen       8089;
        server_name  hn.xiaocao.com;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	#虚拟主机域名映射
    server {
        listen       8088;
        server_name  hn.yuan.com;
        location / {
            root   webnginx;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	#配置反向代理
    upstream tomcat-proxy {
	#配置负载均衡
	    server  192.168.148.128:8080;
		server  192.168.148.128:8580;
		server  192.168.148.128:8680;
    }
    server {
        listen 8899;
        server_name www.yuan.com;
        location / {
            proxy_pass http://tomcat-proxy;
            index index.html;
        }
    }

}

在这里插入图片描述

各位看官》创作不易,点个赞!!!
诸君共勉:万事开头难,只愿肯放弃。

免责声明:本文章仅用于学习参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值