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;
        }
    }
}
posted @ 2023-09-30 15:56  好人~  阅读(81)  评论(0编辑  收藏  举报