您现在的位置是:首页 >学无止境 >【Nginx】- 02 Nginx反向代理、负载均衡、动静分离、虚拟域名配置网站首页学无止境

【Nginx】- 02 Nginx反向代理、负载均衡、动静分离、虚拟域名配置

凌晨五点深蓝 2024-06-17 10:47:47
简介【Nginx】- 02 Nginx反向代理、负载均衡、动静分离、虚拟域名配置


关于基础概念,已经在上篇讲述清楚,本篇不多赘述

1 反向代理

向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

1.1 nginx配置

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        #root   html;
        #index  index.html index.htm;
        proxy_pass http://101.132.152.21:8888/;
    }
}

2 负载均衡

2.1 ngxin配置

#声明tomcat集群
upstream  fengmi {
    server    localhost:8889;
    server    localhost:8888;
}

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass http://fengmi/;
    }
}

2.2 nginx负载均衡策略

2.2.1 默认轮询

2.2.2 权重

#声明tomcat集群
upstream  fengmi {
    server    localhost:8889 weight=2;
    server    localhost:8888 weight=1;
}

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass http://fengmi/;
    }
}

2.2.3 iphash

指定负载均衡服务器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。

#声明tomcat集群
upstream  fengmi {
	ip_hash;
    server    localhost:8889;
    server    localhost:8888;
}

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass http://fengmi/;
    }
}

2.2.4 least_conn

把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。

#声明tomcat集群
upstream  maitaole {
	least_conn;    #把请求转发给连接数较少的后端服务器
    server    localhost:8889;
    server    localhost:8888;
}

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass http://fengmi/;
    }
}

3 动静分离

3.1 打包前端项目

  • 修改src/utils/request.jsp中的baseUrl为后端的nginx服务器的地址

  • 执行npm run build打包项目

3.2 部署前端项目

  • 将dist目录下的资源上传到nginx服务器的html目录下

  • 修改nginx服务器配置

location / {
    root   html;
    index  index.html index.htm;
}

因为现在前端和后端都在同一个nginx服务器上,所以要分开部署

  • 同一台服务器上安装两个Nginx,并修改不同的端口(如:前端部署在8080上,后端部署在80上)
  • 将前端和后端部署在不同的服务器上

3.3 配置静态图片资源访问

配置Nginx访问路径

# 配置图片访问地址
location /upload/ {
	alias D:/workspace/upload/;  # 如果是linux环境则配置(路径自由选择):/usr/local/upload
}

4 虚拟域名配置

4.1 修改nginx配置

#声明tomcat集群
upstream  maitaole {
    server    localhost:8889;
    server    localhost:8888;
}

server {
    listen       80;
    server_name   www.qfjava.com;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass http://fengmi/;
    }
}

4.2 修改本地域名解析器

修改C:WindowsSystem32driversetchosts文件

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
101.132.152.21      www.yingjava.com

4.3 访问测试

http://www.yingjava.com/

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。