nginx安装,实现反向代理和负载均衡

2021-12-06 11:00:47 浏览数 (1)

nginx应该算是当前比较流行的web服务器,体积小性能好,可实现高并发连接,据说可承受5万的并发量,并且使用比较简单,可以实现热部署。今天我们就来简单搞一搞。

一. 安装

截止到目前最新的版本是1.14.2. 到目前为止我的博客里已经分别讲了mysql的安装,redis的安装,其实大家应该能够总结出一些规律,首先第一步肯定是先获取安装包。获取安装包有两种方式,一种是使用wget获取,一种是直接去官网下载,由于我在使用wget的时候连接超时了。所以我使用的是去官网下载。下载链接: http://nginx.org/en/download.html

下载好了之后,使用rz上传到服务器上,然后放到自己的一个目录下,我的软件都统一放在了/usr/software文件夹下。

首先就是解压安装包:

代码语言:javascript复制
tar -zxvf nginx-1.14.2.tar.gz 

解压之后,进入目录; cd /nginx-1.14.2, 执行如下命令

代码语言:javascript复制
./configure

这个时候nginx开始执行配置,配置过程中有可能会出现错误。

如果出现了: ./configure: error: the HTTP gzip module requires the PCRE library.

安装相应的包: yum -y install pcre-devel 即可

重新 ./configure

如果出现了: ./configure: error: the HTTP gzip module requires the zlib library.

安装相应的包: yum install -y zlib-devel 即可

重新 ./configure

直到最后成功。成功后,会在/usr/local/ 下生成nginx文件夹。我们启动一下服务。

代码语言:javascript复制
cd /usr/local/nginx/sbin
./nginx

服务启动后,在浏览器输入ip:80 即可出现nginx访问页面, 80端口可不加

二. 反向代理和负载均衡。

如何理解反向代理呢,

首先我们先说明一下正向代理。比如说我们想访问谷歌,但是由于某些原因无法访问,所以我们就可以科学上网,先访问到谷歌。而这个科学上网就是正向代理,通过它,达到我们的目标。

而反向代理正好相反,比如我们访问百度,输入www.baidu.com. 而这个域名其实就是我们的目标,我们先获取到了我们的目标,但是这个域名后面可能由几十台服务器,而访问域名后,帮我们跳到了其中一台服务器上,这就是反向代理,所以正向反向的区别就在于目标服务器在前还是在后。

有了反向代理,就可以帮我们负载均衡,比如百度,代理到了后面的几十台服务上,几十台服务器就起到了负载均衡的作用,让流量平摊到了不同节点上。

好,接下来我们来玩一下这个反向代理。 我的nginx装在了192.168.1.12这台机器上,我希望通过访问192.168.1.12能帮我把请求转到192.168.1.13 和 192.168.1.14这两台机器上。目标在前,就是反向代理。首先我们在192.168.1.13 和 192.168.1.14两个机器上部署两个springboot应用,直接返回本机ip:

现在我们希望访问12这台机器能够反向代理到这两台机器上。直接修改nginx配置文件:

vim /usr/local/nginx/conf/nginx.conf

代码语言:javascript复制
http {
    upstream action{
        server 192.168.1.13:8888;
        server 192.168.1.14:8888;
    }
    #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       8888;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://action;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
」

重启nginx:

cd /usr/local/nginx/sbin/

./nginx -s reload 完成。

这个时候,我们访问 192.168.1.12:8888 (8888是在上面listen中配置的,也可以配置成其他的)。

再刷新:

说明一会访问到了13,一会访问到了14. 这就是反向代理和负载均衡。由于我在upstream中没有配置任何策略,现在默认是轮训策略,就是一下是13,一下是14. 除此之外,还可以选用权重和hash, 权重只需在upstream server后面的ip地址后加上weight, 就会根据权重选择。 如果是iphash, 会根据ip的hash值计算,如果总共两台,就对2取余,落到其中一台上,这种方式的特点就是,相同的ip会有固定的一台机器处理,有时候有这种方式解决分布式环境下的session一致问题。

0 人点赞