日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Nginx >内容正文

Nginx

Django笔记四十四之Nginx+uWSGI部署Django以及Nginx负载均衡操作

發(fā)布時(shí)間:2023/12/24 Nginx 34 coder
生活随笔 收集整理的這篇文章主要介紹了 Django笔记四十四之Nginx+uWSGI部署Django以及Nginx负载均衡操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文首發(fā)于公眾號(hào):Hunter后端

原文鏈接:Django筆記四十四之Nginx+uWSGI部署Django以及Nginx負(fù)載均衡操作

這一篇筆記介紹如何使用 Nginx + uWSGI 來(lái)部署 Django。

上一篇筆記中有介紹直接使用 uWSGI 作為 web 服務(wù)器來(lái)部署 Django,這一篇筆記介紹如何使用 Nginx 來(lái)部署。

使用 Nginx 來(lái)部署相當(dāng)于在 uWSGI 外面又嵌套了一層,uWSGI 作為內(nèi)部服務(wù)被隱藏起來(lái),這時(shí)候 Nginx 起的作用是反向代理。

在這里,Nginx 的安裝操作就不贅述了,網(wǎng)上都可以找得到如何操作,這里只講相關(guān)的配置操作。

以下是本篇筆記目錄:

  1. uWSGI 配置
  2. Nginx 配置及其作用
  3. Nginx 實(shí)現(xiàn)負(fù)載均衡

1、uWSGi 配置

我們還是復(fù)用上一篇筆記中的 Django 系統(tǒng)代碼和 uWSGI 配置

# uwsgi.ini

[uwsgi]
socket = :9898
chdir = /path/to/hunter/
wsgi-file = hunter/wsgi.py
master=true
processes = 4
threads = 2

注意,這里配置項(xiàng)的第一行已經(jīng)從 http 改成了 socket

如果使用 http,表示我們將 uWSGI 直接作為一個(gè) web 服務(wù)器,比如可以在瀏覽器訪問(wèn)相關(guān)接口。

如果使用 socket,表示會(huì)有比如 Nginx 一樣的服務(wù)來(lái)作為 web 服務(wù)器,這個(gè)時(shí)候 uWSGI 起到類似中間件的作用,負(fù)責(zé)將來(lái)自 web 服務(wù)器的請(qǐng)求解析后轉(zhuǎn)發(fā)給 Django 來(lái)處理。

2、Nginx 配置及其作用

在我這里,Nginx 的相關(guān)配置在 /etc/nginx/nginx.conf

Nginx 的配置如下:

http {
    
    server {
        listen 8900;

        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:9898;
            uwsgi_read_timeout 2;
        }
    }
}

這里,listen 表示 Nginx 對(duì)外開(kāi)放的是 8900 端口

location 表示的是定義的路由,這里是 /,表示 8900 端口后可以直接接上 Django 系統(tǒng)的 api 接口。我們也可以改成其他的,比如 /backend,那么訪問(wèn) Django 的每一個(gè)接口前綴都要加上 /backend

其下,uwsgi_pass 表示指向的是本機(jī)的 9898 端口服務(wù),這里和我們 uWSGI 里的配置是一致的

uwsgi_read_timeout 表示的是超時(shí)時(shí)間,這里定義的是兩秒。

接下來(lái)我們啟動(dòng) uWSGI 服務(wù)和 Nginx 服務(wù):

uwsgi uwsgi.ini

sudo /etc/init.d/nginx restart

這時(shí)候訪問(wèn) Nginx 所在的 地址的 8900 端口,http://192.168.1.33:8900/admin,就可以訪問(wèn)我們的 Django 系統(tǒng)了。

如果想要 admin 頁(yè)面有前端樣式展示,記得添加 uwsgi.ini 上篇筆記中的對(duì)應(yīng)的靜態(tài)文件配置。

3、Nginx 實(shí)現(xiàn)負(fù)載均衡

在上面的操作中,一個(gè)請(qǐng)求從客戶端到 Nginx,再到 uWSGI 和 Django,這個(gè)過(guò)程就是反向代理。

而如果請(qǐng)求量過(guò)大,一個(gè) uWSGI 和 Django 和對(duì)應(yīng)的數(shù)據(jù)庫(kù)可能扛不住訪問(wèn)壓力,所以需要增設(shè)多個(gè)后端來(lái)分擔(dān)請(qǐng)求,這個(gè)就是負(fù)載均衡。

首先介紹一下負(fù)載均衡的幾種策略:

  • 輪詢
  • 加權(quán)
  • ip hash

這里假設(shè)我們起了三個(gè)后端實(shí)例,ip 和端口分別是 192.168.1.31:9898、192.168.1.33:9898、192.168.1.144:9898

1. 輪詢

所謂的輪詢,就是按照請(qǐng)求的時(shí)間順序逐個(gè)分配到指定的這三個(gè)后端服務(wù)上,這里 Nginx 的配置如下:

http {
    upstream web {
        server 192.168.1.31:9898;
        server 192.168.1.33:9898;
        server 192.168.1.144:9898;
    }
    
    server {
        listen 8900;

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

上面的這種方式配置之后,重啟 Nginx 和 uWSGI 之后,就會(huì)通過(guò)輪詢的方式來(lái)發(fā)送請(qǐng)求到三個(gè) Django 服務(wù)了。

注意:上面的配置方式,proxy_pass 表示是基于 http 協(xié)議進(jìn)行請(qǐng)求的,也就是說(shuō) Nginx 到 uWSGI 走的是 http 協(xié)議,我們需要將 uwsgi.ini 的配置改成 http=:9898

如果要走之前的 uwsgi 協(xié)議請(qǐng)求方式,需要將 Nginx 的這里改成這樣:

    server {
        listen 8900;

        location / {
            include uwsgi_params;
            uwsgi_pass web;
        }

2. 加權(quán)

加權(quán)就是可以人為控制到幾個(gè)服務(wù)器請(qǐng)求的數(shù)量的占比,比如對(duì)于這三個(gè)后端,想要請(qǐng)求到它們的請(qǐng)求的數(shù)量比為 1:2:3,可以這樣設(shè)置:

    upstream web {
        server 192.168.1.31:9898 weight=1;
        server 192.168.1.33:9898 weight=2;
        server 192.168.1.144:9898 weight=3;
    }

這樣,來(lái)六個(gè)請(qǐng)求的話,這三個(gè)后端分配到的請(qǐng)求數(shù)量分別是 1,2,3個(gè)。

3. ip hash

這是根據(jù)客戶端地址來(lái)進(jìn)行分配的一個(gè)操作,假設(shè)某個(gè)請(qǐng)求的 ip 是 192.168.1.59,這時(shí)候 Nginx 會(huì)根據(jù) ip 計(jì)算一個(gè)值之后映射到三個(gè)后端服務(wù)的某一個(gè),在之后的每次請(qǐng)求都會(huì)指向這個(gè)后端服務(wù)。

其配置如下:

    upstream web {
        ip_pash;
        server 192.168.1.31:9898;
        server 192.168.1.33:9898;
        server 192.168.1.144:9898;
    }

如果使用 ip hash 策略,來(lái)自某個(gè)客戶端的請(qǐng)求都會(huì)定向指向某個(gè)后端服務(wù),因此可以不用擔(dān)心解決后端服務(wù)共享 session 的問(wèn)題。

注意:因?yàn)樾枰幚?session 共享的問(wèn)題,所以在上面的測(cè)試中,我這邊都是直接訪問(wèn)的不用登錄,也就是不用擔(dān)心 session 問(wèn)題的接口。

在實(shí)際的負(fù)載均衡的后端服務(wù)中,session 的共享,使用戶保持登錄狀態(tài)而無(wú)感,是一個(gè)需要解決的問(wèn)題,這個(gè)在之后有機(jī)會(huì)的話再開(kāi)筆記詳細(xì)講述。

如果想獲取更多相關(guān)文章,可掃碼關(guān)注閱讀:

總結(jié)

以上是生活随笔為你收集整理的Django笔记四十四之Nginx+uWSGI部署Django以及Nginx负载均衡操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久99色 | 日韩一区二区高清 | 日本免费黄色网址 | 亚洲精品一区中文字幕乱码 | 欧美午夜精品久久久久久浪潮 | xxx毛片 | 精品久久国产字幕高潮 | 福利视频免费 | 亚洲视频手机在线 | 91久久免费 | 日本不卡一区二区三区 | 精品一区二区三区久久 | 熟妇毛片 | 啪啪av网 | 东方av正在进入 | 九九免费精品视频 | 一区二区三区激情视频 | 日批免费观看视频 | 成人精品久久 | 午夜影院在线视频 | 免费在线观看的黄色网址 | 亚洲精品www久久久久久广东 | 国产精品久久久久久久免费看 | 久久裸体视频 | 中文字幕日韩在线播放 | 亚洲男人天堂影院 | 18日本xxxxxxxxx95 国产又好看的毛片 | 神马午夜888 | 欧美成人黄色小说 | 夜夜看av | 日批视频免费看 | 91九色国产在线 | 午夜视频观看 | www.亚洲免费 | 无码日韩人妻精品久久蜜桃 | 五月婷婷俺也去 | 中文字幕观看 | 手机在线小视频 | 色黄网站| 国产午夜免费福利 | 五月天社区 | 亚洲无码精品国产 | 亚洲国产aaa | 日本综合久久 | 久久亚洲av无码西西人体 | 成人av资源站| 国产精品视频a | 欧美成人精精品一区二区频 | 岛国av在线播放 | 麻豆av一区 | 精品少妇人妻av一区二区三区 | 五月丁香综合激情六月久久 | 国产成人av一区二区三区不卡 | 亚洲精品男女 | 日韩网站免费观看高清 | 97黄色网 | 香蕉久久久久 | 欧美大浪妇猛交饥渴大叫 | 久久久久久色 | 久久久黄色网 | 黄色日韩网站 | 97国产高清 | 久久久啊啊啊 | 中文字幕日韩精品在线观看 | 在线视频中文 | 日本精品久久久久久久 | 日韩在线观看免费网站 | 国产精品视频合集 | 国产sm调教一区二区 | 国产精品久久久久9999爆乳 | 国产88av| 日美韩一区二区三区 | 精品在线观看一区二区 | 久久色视频 | av青青草 | 国产成人aa | 欧美乱仑 | 三级黄色网 | 日日舔夜夜操 | 中文字幕国产一区 | 精品人妻一区二区三区免费看 | 不卡一区二区在线观看 | 成年人视频在线播放 | 国产福利小视频在线 | 殴美毛片 | 制服丝袜先锋影音 | 精品一区二区三区日韩 | 91精品国产91久久久久青草 | 日韩激情小说 | 中文字幕一区二区三区乱码在线 | 免费一级欧美 | 久久精品久久久久久久 | 久久99操| 波多野结衣在线免费观看视频 | 色屋永久 | 性史性农村dvd毛片 日韩精品在线视频观看 | 久久久久久久久久久久久国产 | 男人捅爽女人 | 性欧美极品另类 |