nginx代理服务器

1、什么是nginx?

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。开源软件,服务器软件.能够支持高达 50,000 个并发连接数的响应。

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-devel

(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

(3)使用浏览器访问

 这里需要注意的是要关闭虚拟机的防火墙或者放行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中

修改nginx.conf 文件

    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

 

nginx.conf 中的配置如下

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值