nginx实现反向代理实例
参考视频
服务器代码:
from http.server import HTTPServer, BaseHTTPRequestHandler
class Request(BaseHTTPRequestHandler):
#通过类继承,新定义类
timeout = 5
server_version = 'Apache'
def do_GET(self):
#在新类中定义get的内容(当客户端向该服务端使用get请求时,本服务端将如下运行)
self.send_response(200)
self.send_header("type","get") #设置响应头,可省略或设置多个
self.end_headers()
msg = 123 #要返回给客户端的信息
msg = str(msg).encode() #转为str再转为byte格式
self.wfile.write(msg) #将byte格式的信息返回给客户端
def do_POST(self):
#在新类中定义post的内容(当客户端向该服务端使用post请求时,本服务端将如下运行)
data = self.rfile.read(int(self.headers['content-length'])) #获取从客户端传入的参数(byte格式)
data = data.decode() #将byte格式转为str格式
self.send_response(200)
self.send_header("type","post") #设置响应头,可省略或设置多个
self.end_headers()
msg = int(data)*2 #要返回给客户端的信息(将str转为int再x2)
msg = str(msg).encode() #转为str再转为byte格式
self.wfile.write(msg) #将byte格式的信息返回给客户端
host = ('0.0.0.0',9997) #设定地址与端口号,'localhost'等价于'127.0.0.1'
server = HTTPServer(host, Request) #根据地址端口号和新定义的类,创建服务器实例
server.serve_forever() #开启服务
在不同服务器上面运行上述代码,假设服务器ip为192.168.8.128和192.168.8.129。那么nginx中的代码为如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream backend_servers { # 需要代理的服务器ip
# 两个服务器的代码都是weight=1,这代表访问192.168.8.128:9997时,
# 有相等的概率“打到”这下面两个服务器上
server 192.168.8.129:9997 weight=1;
server 192.168.8.128:9997 weight=1;
}
server {
listen 8080;
server_name 192.168.8.128; # 访问使用的ip
location / {
proxy_pass http://backend_servers;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-09-30 Linux内核设计与实现笔记