使用uWSGI與nginx是很常見(jiàn)的生產(chǎn)配置,今天在部署的時(shí)候一直沒(méi)有想通其中的關(guān)系裳涛,反復(fù)琢磨之后才搞懂,發(fā)現(xiàn)自己是對(duì)一開(kāi)始請(qǐng)求的對(duì)象產(chǎn)生了混淆。
1.uWSGI配置如下所示
[uwsgi]
socket=外網(wǎng)ip:端口(使用nginx連接時(shí)襟雷,使用socket)
http=外網(wǎng)ip:端口(直接做web服務(wù)器,使用http)
chdir=項(xiàng)目根目錄
wsgi-file=項(xiàng)目中wsgi.py文件的目錄仁烹,相對(duì)于項(xiàng)目根目錄
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log
2.nginx配置如下
使用apt安裝的nginx的配置文件處于/etc/nginx/中 (/sites-enabled/default
)
server {
#listen 80 default_server;
listen 127.0.0.1:80 default_server;
# ......
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
location /static {
alias /var/www/test8/static/;
}
# ......
}
listen綁定localhost的80端口耸弄,location+地址可以指定去哪里訪問(wèn)資源,/static訪問(wèn)靜態(tài)文件卓缰,/訪問(wèn)不是靜態(tài)的所有資源计呈,配置之后,就可以通過(guò)127.0.0.1:80訪問(wèn)資源征唬,普通請(qǐng)求通過(guò)location / 再通過(guò)uwsgi_pass轉(zhuǎn)發(fā)到127.0.0.1:8000捌显,之后通過(guò)uWSGI的socket與項(xiàng)目連接
與直接做web服務(wù)器不同,使用nginx之后相當(dāng)于在原先的基礎(chǔ)上又加了一層門(mén)戶(hù)总寒,通過(guò)這個(gè)門(mén)戶(hù)苇瓣,來(lái)判斷接下來(lái)該向哪里訪問(wèn),既能訪問(wèn)到uWSGI偿乖,也能訪問(wèn)靜態(tài)文件击罪,完美的解決問(wèn)題