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

news/2024/7/9 23:40:41 标签: nginx, 负载均衡, 运维

文章目录

  • nginx负载均衡&反向代理&动静分离
        • 环境
        • 说明
        • 部署动静分离
          • 1.主机lnmp部署一个动态页面,在此以discuz论坛系统为例
          • 2.主机n1部署两个静态页面
          • 访问动、静态页面
        • 配置负载均衡
        • 配置反向代理
        • 访问测试

nginx_1">nginx负载均衡&反向代理&动静分离

环境
主机名角色环境操作系统IP地址
lb负载均衡nginx/1.24.0centos-8192.168.179.10
lamp动态网站服务器lnmp架构+Discuz论坛centos-8192.168.179.11
n1静态网站服务器nginx/1.24.0centos-8192.168.179.100

说明

主机lamp部署一个动态网页,主机n1部署一个静态页面。主机lb部署nginx服务,实现动静分离的负载均衡

部署nginx服务、部署lnmp架构请阅读nginx服务和LNMP架构&部署Discuz论坛系统

部署动静分离
1.主机lnmp部署一个动态页面,在此以discuz论坛系统为例

部署lnmp架构&discuz论坛请阅读和LNMP架构&部署Discuz论坛系统

//配置访问根目录就访问到论坛
//修改配置文件默认的server下面的两个localtion
[root@lnmp ~]# vim /usr/local/nginx/conf/nginx.conf
......
        location / {
            root   html/Discuz/upload;             //改为论坛的根目录
            index  index.php index.html index.htm;
        }
......
        location ~ \.php$ {
            root           html/Discuz/upload;    //改为论坛的根目录
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }
......

//重启nginx服务
[root@lnmp ~]# systemctl restart nginx.service 
2.主机n1部署两个静态页面
1.第一个静态页面
//创建一个目录,并编辑一个测试用的index.html文件
[root@n1 ~]# cd /usr/local/nginx/html/
[root@n1 html]# mkdir www.test1.com
[root@n1 html]# vim www.test1.com/index.html
[root@n1 html]# cat www.test1.com/index.html 
this is test1

//修改配置文件,创建第1个虚拟主机
[root@n1 ~]# vim /usr/local/nginx/conf/nginx.conf
......
server {
        listen       80;
        server_name  www.test1.com;         //第一个域名
......
location / {
            root   html/www.test1.com;      //修改目录为网站文件的目录
            index  index.html index.htm;
        }
......


2.第二个静态页面
//创建一个目录,并编辑一个测试用的index.html文件
[root@n1 ~]# cd /usr/local/nginx/html/
[root@n1 html]# mkdir www.test2.com
[root@n1 html]# vim www.test2.com/index.html
[root@n1 html]# cat www.test2.com/index.html 
this is test2
[root@n1 html]# 

//修改配置文件,创建第2个虚拟主机

......
    server {
        listen       8080;
        server_name  www.test2.com;

        location / {
            root   html/www.test2.com;
            index  index.html index.htm;
        }
    }
......

//重启nginx服务
[root@n1 ~]# systemctl restart nginx.service 
访问动、静态页面

访问第一个静态

在这里插入图片描述

访问第二个静态

在这里插入图片描述



访问动态

在这里插入图片描述


配置负载均衡

负载均衡器(主机lb)里配置

//修改配置文件,在http段里面写(与server平级)
[root@lb ~]# vim /usr/local/nginx/conf/nginx.conf
......
 upstream dynamic {
        server 192.168.179.11:80 weight=1;        //动态页面
    }

    upstream static {
        server 192.168.179.100:80 weight=1;       //静态页面,有两个,做负载均衡
        server 192.168.179.100:8080 weight=1;
    }
......
配置反向代理

负载均衡器(主机lb)里配置

在server段里面配,和localtion同级

1.//配置访问根目录就是访问静态页面
[root@lb ~]# vim /usr/local/nginx/conf/nginx.conf
......
        location / {
            proxy_pass http://static;    //访问根就跳转到静态页面
        }
......

2.//配置访问.php的就是访问动态页面
  //找到这三行,取消注释,修改
[root@lb ~]# vim /usr/local/nginx/conf/nginx.conf
......
        location ~ \.php$ {
            proxy_pass   http://dynamic;
        }
......

//重启服务
[root@lb ~]# nginx -s stop
[root@lb ~]# nginx 
访问测试

访问负载均衡器(主机lb)的ip,反向代理到静态页面

在这里插入图片描述

访问成功,刷新一下

在这里插入图片描述

成功实现负载均衡


访问负载均衡器(主机lb)的ip加index.php,反向代理到动态页面

在这里插入图片描述

访问成功

因为负载均衡器本地没有动态页面的文件,所以没有图片显示


http://www.niftyadmin.cn/n/5108598.html

相关文章

SystemVerilog Assertions应用指南 Chapter1.38在序列匹配时调用子程序

SVA可以在序列每次成功匹配时调用子程序。同一序列中定义的局部变量可以作为参数传给这些子程序。对于序列的每次匹配,子程序调用的执行与它们在序列定义中的顺序相同。 module sub;logic a, b, clk;initial $vcdpluson();initial begin clk 1b0; a1b0; b1b0; repeat(2) (pos…

主机重启后k8s kubelet无法自动启动问题解决梳理

1.问题描述 OS Version:CentOS Linux release 7.9.2009 (Core) K8S Version:Kubernetes v1.20.4 K8S安装配置完成后,重启服务器发现,kubelet没有正常启动(systemctl status kubelet) 命令: systemctl status kubelet [root@centos79-3 ~]# systemctl status kubelet ●…

网络安全中的人工智能:优点、缺点、机遇和危险

2022 年秋天,人工智能在商业领域爆发,引起了轰动,不久之后,似乎每个人都发现了 ChatGPT 和 DALL-E 等生成式 AI 系统的新的创新用途。世界各地的企业开始呼吁将其集成到他们的产品中,并寻找使用它来提高组织效率的方法…

【Qt之json文件】json文件介绍及相关读写类介绍、示例

JSON介绍 JSON(JavaScript Object Notation)是一种源自Javascript的编码对象数据的轻量级的数据交换格式,易于理解和编写,JSON但现在已广泛用作互联网上的数据交换格式。 Qt提供了处理JSON数据的支持。Qt中的JSON支持提供了一个易…

Ubuntu - 查看系统信息

uname uname(Unix Name)是一个用于显示有关操作系统的信息的命令。在Ubuntu或其他Linux系统上,可以使用uname来查看各种系统信息,如内核版本、操作系统类型、架构等。以下是一些常用的uname命令选项: uname&#xff1…

C++中的fsanitize指令

一个集成在 gcc、clang 编译器中的编译指令&#xff0c;可以有效测试程序中的一些诸如数组越界、未定义行为等情况。 举个例子&#xff1a; #include <bits/stdc.h> using namespace std;const int maxn2e55,mxr1e5,maxm1e75; int head[maxn],nxt[maxn],to[maxn],f[max…

typescript实现一个简单的区块链

TypeScript 是一种由 Microsoft 推出的开源编程语言&#xff0c;它是 JavaScript 的超集&#xff0c;允许程序员使用面向对象的方式编写代码&#xff0c;并提供类型检查和语法提示等优秀的开发体验。区块链技术是一种分布式的、可靠的、不可篡改的数据库技术&#xff0c;用于记…

人大金仓与哪吒科技达成战略合作,加快推动智慧港口建设

近日&#xff0c;人大金仓与哪吒港航智慧科技&#xff08;上海&#xff09;有限公司&#xff08;以下简称“哪吒科技”&#xff09;达成战略合作。双方旨在共享优势资源&#xff0c;联合为港口企业转型升级提供完备的技术支撑与行业解决方案。人大金仓总裁杜胜、哪吒科技总经理…