Nginx反向代理动态业务
问题:
- 当我们部署完Nginx静态数据后,发现动态业务无法访问。
原因:
- Nginx服务器无法找到美多商城服务器。
解决:
- 部署美多商城服务器,并使用Nginx反向代理
部署服务器
1.准备生产环境配置文件
- 复制开发环境配置文件
dev.py
到生产环境配置文件prod.py
,并做修改。
# SECURITY WARNING: don't run with debug turned on in production! # DEBUG = True DEBUG = False ALLOWED_HOSTS = ['*',]
2.准备生产环境启动文件
- 生产环境我们是使用
meiduo_mall.wsgi.py
启动服务的。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings.dev")
3.安装uwsgi
包
- Django的程序通常使用
uwsgi服务器
来运行。
$ pip install uwsgi
4.准备uwsgi服务
器配置文件
- 新建
meiduo_mall.uwsgi.ini
配置文件
[uwsgi] # 使用Nginx连接时使用,Django程序所在服务器地址 socket=127.0.0.1:8001 # 直接做web服务器使用,Django程序所在服务器地址 # http=172.16.21.25:8001 # 项目目录 # chdir=项目路径/meiduo_project/meiduo_mall chdir=/Users/meihao/Desktop/project/meiduo_mall # 项目中wsgi.py文件的目录,相对于项目目录 wsgi-file=meiduo_mall/wsgi.py # 进程数 processes=4 # 线程数 threads=2 # uwsgi服务器的角色 master=True # 存放进程编号的文件 pidfile=uwsgi.pid # 日志文件 daemonize=uwsgi.log # 指定依赖的虚拟环境 # virtualenv=/Users/meihao/.virtualenvs/project virtualenv=虚拟环境路径/.virtualenvs/meiduo_mall
5.管理uwsgi服务器
# 启动 $ uwsgi --ini uwsgi.ini # 关闭 $ uwsgi --stop uwsgi.pid
部署Nginx服务器反向代理
1.修改Nginx服务器配置文件
http { ...... # 美多商城服务器 upstream meiduo { server 127.0.0.1:8001; # 美多商城服务器1 # server 172.16.21.25:8002; # 美多商城服务器2 } server { listen 80; server_name www.meiduo.site; ...... location / { include uwsgi_params; uwsgi_pass meiduo; } } }
2.启动Nginx服务器
# ubuntu: # 检查配置文件 $ sudo /usr/local/nginx/sbin/nginx -t # 重启 sudo /usr/local/nginx/sbin/nginx -s reload # mac: $ sudo /usr/local/bin/nginx -t sudo /usr/local/bin/nginx -s reload