nginx代理服务器

1、什么是nginx

2、如何安装nginx?
(1)安装nginx软件所需的依赖插件


yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devell

(2)把我们的nginx安装包上传到linux中并解压

 

(3)创建一个目录作为nginx的安装目录

mkdir /usr/nginx

 

 

(4)进入nginx的解压目录

cd /usr/local/nginx-1.18.0

 

 

(5)设置nginx的安装路径为上面/usr/nginx

./configure --prefix=/usr/nginx

 

(6)编译--安装

make  ---编译
make install ---编译并安装【执行这一条语句可以不执行上一条语句】

 

  安装成功后可以在自己创建的/usr/nginx目录下看到安装的目录文件

 conf:配置目录,其中存放的是关于nginx的配置文件;

html:存放的静态资源;

logs:存放的相关日志;

sbin:启动和关闭nginx的脚本文件

(7)启动nginx

 

 

nginx是一个可执行的文件

./nginx 开启nginx

./nginx -s stop 关闭nginx

./nginx -s reload 重新加载配置文件---修改完配置文件后使用该命令

 

 

(8) 访问nginx服务器  

nginx的端口号为80,我们访问的时候端口号可加可不加;

我们在Windows浏览器中访问虚拟机中的nginx服务器时要保证我们的虚拟机中的防火墙处于关闭状态或者放行80端口;

1、关闭防火墙

systemctl stop firewalld

systemctl disable firewalld【永久关闭防火墙,也就是在防火墙关闭之后禁用防火墙,下次开机防火墙仍处于关闭状态】

2、放行80端口

firewall-cmd --add-port=80/tcp --zone=public --permanent

重启防火墙服务

systemctl restart firewalld

查看80端口是否放行

firewall-cmd --list-port

 

 3、nginx配置文件

nginx的配置文件在/usr/nginx/conf下

 

nginx.conf中nginx的最大连接数

添加一个为81端口的服务,设置进入根目录看到的页面是my/my.html

 

 

    

我们修改nginx的配置时,只需要修改这一部分代码即可

# nginx服务的配置
    server {
        # 监听的端口号
        listen       80;
        # 服务器的名字
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        # 进入根目录看到的首页
        location / {
            # 进入根目录看到的页面的所在目录
            root   html;
            # 进入nginx的首页
            index  index.html index.htm;
            # 真实服务器所在的ip加上真实服务器的端口号
            # proxy_pass   http://127.0.0.1;
        }
    }

 

4、nginx的三大核心

反向代理,负载均衡,动静分离

(1)反向代理

正向代理: 该服务器代理的为客户端,对于后面真实的服务器来说,不知道访问者的地址。比如:翻墙软件。

反向代理: 该服务器代理的为服务器端,对于客户来说不知道访问的真实服务器。

 

(2)使用nginx实现反向代理

实现过程:用户使用浏览器访问nginx代理服务器,再通过nginx访问内网的真实服务器; 

 

准备一个真实项目和Tomcat服务器 并把项目部署到Tomcat.

springboot项目(内置了tomcat,启动项目即可)

(1)将我们编写的项目打包放入Linux中

将我们之前写的springboot项目打包,我们见到的包有jar包也有war包,至于打包打成那种,取决于我们pom.xml文件。

 

 

 

 

(2)启动一个Tomcat应用程序 (运行jar包或者war包)

java -jar xxxx.jar

 

 

 

这里需要注意的是要关闭虚拟机的防火墙或者放行8080端口

关闭防火墙

systemctl stop firewalld

放行8080端口

firewall-cmd --add-port=8080/tcp --zone=public --permanent

(4)使用nginx反向代理

配置nginx的配置文件nginx.conf,这个文件在nginx的安装目录下的conf目录下

cd /usr/nginx/conf

vi nginx.conf

     server {
        # 监听的端口号
        listen       81;
        # 服务器的名字
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        # 代理我们的服务器
        location / {
            # 书写方式为ip加上端口号
            proxy_pass http://192.168.100.130:8080;#这里的ip为我们项目锁运行的服务器ip地址
        }
    }

这是我们测试的时候使用nginx所在的ip地址和nginx的端口号访问此项目;要保证我们的项目和nginx都保持在运行状态。

 

 

(4)运行war包

打包步骤和上面一样,这里写的时候不是用的springboot项目,而是SSM项目,所以打成了war包,直接放在tomcat的webapps下,启动tomcat即可。

  将上面的包放入Linux中

     server {
        # 监听的端口号
        listen       82;
        # 服务器的名字
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        # 代理我们的服务器
        location / {
            # 书写方式为ip加上端口号
            proxy_pass http://192.168.100.130:8080/phone/login.jsp;#这里的ip为我们项目锁运行的服务器ip地址
        }
    }

  运行tomcat

cd /usr/local/tomcat9.0/bin

./startup.sh

 

 

这里我们添加了82端口,但是Linux防火墙没有放行82端口,所以我们想在Windows系统下访问的话需要放行82端口

放行82端口

firewall-cmd --add-port=82/tcp --zone=public --permanent 

重启防火墙服务

systemctl restart firewalld

 

 

(3)nginx---负载均衡

 

我使用的是两个桥接模式的虚拟机,在之后的实际开发过程中,两个服务器运行的项目内容应该是同一个项目,但是这里为了看到nginx负载均衡的效果,分别在两个不同的服务器上运行两个不完全相同的项目来进行测试。

 我们访问nginx服务器的路径和端口号,每次刷新会交替执行不同的项目,这里默认采用的负载均衡的策略为轮询策略。

 

 负载均衡的策略

1)、轮询(默认)

  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2)、权重(weight)

  指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

2)、ip_hash

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

3)、fair(第三方)

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

4)、url_hash(第三方)
 

权重weight

ip_hash

 

(4)nginx---动静分离

 

 nginx.conf文件的编辑,这个项目里用到了session,解决nginx中session丢失的问题是请求发送时携带cookie信息,具体代码如下所示。

server {
        # 监听的端口号
        listen       80;
        # 服务器的名字
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        # 代理我们的服务器
        location / {
            proxy_redirect off;
            # 书写方式为ip加上端口号
            proxy_pass http://192.168.1.31:8080/phone/;#这里的ip为我们项目锁运行的服务器ip地址
            proxy_cookie_path /phone/ /;
            proxy_cookie_path /phone /;
            proxy_set_header Host $host;
            proxy_set_header Referer $http_referer;
            proxy_set_header Cookie $http_cookie;  #请求发送时携带cookie信息
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
        # 放行静态资源
        #location ~ \.jpg|.png|.css|.js|.woff|.xml$ {
          #   root webapp;
        #}
    }

(4)nginx---高可用

准备条件:

两个nginx服务器,一个为主服务器(master),一个为备用服务器(backup)

用户访问的时候访问虚拟ip

 

(1)需要再每个nginx所在的主机上安装keepalived

yum install -y keepalived 安装keepalived

rpm -q -a keepalived  检查是否安装keepalived

 

 

 

  修改keepalived的配置文件,配置文件默认在/etc/keepalived目录

 将keepalived.conf文件中的内容替换

global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
                # 当前服务器的ip
    smtp_ server 192.168.1.30
    smtp_connect_timeout 30
    router_id 192.168.1.30
}
# 定义检查nginx的脚本文件
vrrp_script chk_http_ port {
    script "/usr/local/src/nginx_check.sh"
    interval 2
    weight 2
}
 
vrrp_instance VI_1 {
    # 设置主从关系
    state MASTER
    #网卡接口 网卡类型
    interface ens33
    virtual_router_id 51
    # 优先级,值越大优先级越高,master要高于backup
    priority 100
    advert_int 1
    authentication {
        auth type PASS
        auth pass 1111
        }
    # 虚拟IP
    virtual_ipaddress { 
        192.168.1.50
    }
}

 nginx_check.sh中的文件,将这个文件存放在keepalived.conf中写的路径下

/usr/local/src/nginx_check.sh

#!/bin/bash
# 检查是否开启nginx
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
    # 开启nginx nginx脚本所在的路径
    /usr/nginx/sbin/nginx
    sleep 2
    # 开启nginx失败 则执行关闭keepalived
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
		# 杀死 keepalived进程
        killall keepalived
    fi
fi

上面使用的killall命令杀死进程,如果没有killall命令可以先安装

yum install -y psmisc   这个命令可以安装killall

 

 

 两台机器都启动nginx服务,然后再启动keepalived 

启动keepalived

systemctl start keepalived

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值