前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx概念及负载均衡实现

Nginx概念及负载均衡实现

作者头像
打铁读书郎
发布2024-04-11 21:06:02
1470
发布2024-04-11 21:06:02
举报

中间件-Nginx概念及负载均衡实现

代码语言:javascript
复制
20221107: 初稿
20230828: nginx字

本文主要讲述nginx的概念,安装, 以及负载均衡的实现

概念

高性能, HTTP和反向代理web服务器, 同时提供邮件协议服务

特点: 占用内存少, 稳定, 并发能力强

功能: 反向代理, 负载均衡,动静分离,iphash

反向代理:

代理服务器接受客户端发出的请求, 再讲请求转发给请求服务器 获取数据, 再返回给客户端,实现了真实服务器ip的隐藏

负载均衡

使用轮询或加权轮询将请求压力分配到服务器集群中

动静分离

将静态资源直接部署在nginx服务器上, 当静态资源被请求时,会直接返回

iphash

将客户端的ip与服务器进行映射, 在一个session中, 客户端的请求始终发往一个服务器

实际业务中一般使用redis来实现session共享来解决这个问题

下载安装

win

windows官网现在windows安装版: nginx: download,解压在英文路径中

重要文件目录:

  • conf -> nginx.conf : nginx配置文件
  • nginx.exe : nginx启动文件

Linux

代码语言:javascript
复制
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel # 一键安装依赖 # 下载解压
wget http://nginx.org/download/nginx-1.14.2.tar.gz tar zxvf nginx-1.14.2.tar.gz # 进行编译和安装 
cd nginx-1.14.2/
./configure 
make && make install

重要文件目录:

  • conf -> nginx.conf : nginx配置文件

常用命令

代码语言:javascript
复制
nginx  # 启动nginx
nginx -s relaod # 重新加载配置文件(更新配置文件后使用)
nginx -s stop # 停止
nginx -s quit  # 安全退出
ps -ef |gerp nginx # 查看nginx进程

负载均衡实现

准备服务器

为了模拟多服务器, 我这边使用flask本地快速起了2个服务, 2个服务返回的信息不同

app1

代码语言:javascript
复制
from flask import Flask

app = Flask(__name__)

@app.route("/api/t")
def get_ticket():
    return "You are in ticket module"

if __name__ == '__main__':
    app.run(port=8082)

app2

代码语言:javascript
复制
...
def get_ticket():
    return "You are in txtanls module"
if __name__ == '__main__':
    app.run(port=8084)

Nginx配置

修改nginx.conf对nginx进行配置

upstream :定义在http内部,用于配置负载均衡

server server_ip:port weight=

server: 定义服务器地址及端口

weight: 定义轮询权重

反向代理: 定义在location内部, 定义代理的服务器及通信协议

xxx_pass $代理服务器地址

xxx_pass: 定义服务器通信协议

  • uwsgi_pass: uwsgi协议
  • fascgi_pass: fascgi协议
  • proxy_pass: http协议

代理服务器地址:

  • 反向代理直接填写 server_ip:port ,
  • 如果还要使用负载聚恒或者使用 http://$up_stream
代码语言:javascript
复制
# 全局设置
....
# http其他配置
http {
	.... 

	# 1.负载均衡设置
	upstream test{
		# 服务器资源及轮询权重
		server localhost:8082 weight=1;
		server localhost:8084 weight=1;  # weight: 用于定义服务器之间的权重
	}
	
    server {
        listen       80;
        server_name  localhost;

        location / {
            root	html;
            index  index.html index.htm;
			proxy_pass	http://test;			# 2.反向代理, 使用http协议走负载均衡服务器
        }
    }
}

重启nginx并测试

代码语言:javascript
复制
nginx -s reload

浏览器访问服务器localhost/api/t, 不断刷新 最终发现返回的数据是2个服务器交替返回的, 就是我们成功实现了轮询模式的负载均衡

代码语言:javascript
复制
You are in txtanls module
# 刷新
You are in ticket module
# 刷新
You are in txtanls module
.....

子配置块

作用

将配置分为多个文件, 更利于配置管理

配置

nginx.conf配置

代码语言:javascript
复制
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

	...
    include /etc/nginx/conf.d/*.conf;  # include配置子配置文件目录
}

子文件目录: 如 a.conf配置server

代码语言:javascript
复制
server {
    listen 80;
    server_name sapi.ilabpower.tech;

    location / {
		...
    }

    error_page 404 /404.html;
    location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

server {
    listen 80;
    server_name s.ilabpower.tech;

    location / {
		...
    }
	...
}

Reference

Nginx 配置详解 | 菜鸟教程 (runoob.com)

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 中间件-Nginx概念及负载均衡实现
    • 概念
      • 下载安装
        • win
        • Linux
      • 常用命令
        • 负载均衡实现
          • 准备服务器
          • Nginx配置
          • 重启nginx并测试
        • 子配置块
          • Reference
          相关产品与服务
          负载均衡
          负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com