有些新手朋友问我反响代理和负载均衡如何使用,那么记录一下nginx基本的负载均衡和反向代理的使用(以python的django框架来简单介绍一下,django+gunicorn/wsgi+nginx+mysql 等数据库)
1-首先说一下如果不用nginx如何在服务器上部署服务
我们都知道django自带测试服务器,但是该服务器只限于开发使用,那么我们真正部署时要使用gunicorn或者wsgi代替本身自带的测试服务器:使用任何一个都少不了配置,以gunicorn的配置文件来说明:
1.1-在django服务的manage.py的同级目录下创建文件gunicorn.con(文件名自定义)
1.2-下面是几个简单的配置说明:
# gunicorn所在位置(可使用命令-- whereis gunicorn 查看)
command = '/root/.virtualenvs/gwcomments/bin/gunicorn'
# 项目所在目录,manage.py所在目录,找到manage.py,使用命令 pwd 查看
pythonpath = '/data/gwcomments/gwcomments'
# 运行服务的ip和端口
bind = '127.0.0.1:8000'
# 线程数 cpu数*2 + 1
workers = 2
# 日志存放目录以及格式
accesslog = '/var/gwcomments/accesslog.txt'
access_log_format = '%(h)s %(a)s %(l)s %(u)s %(s)s %(D)s %(r)s %(t)s'
errorlog = '/var/gwcomments/errorlog.txt'
loglevel = 'info'
现在启动服务就不再使用python manage.py runserver了,而是使用gunicorn来启动服务: gunicorn gwcomments.wsgi -c gunicorn.con
然后使用你服务器的ip:启动端口/url来看是否可以成功访问(49.***.***.***:8000/test_url)
2-使用nginx只配置反向代理
上面的步骤依然是必须的,只有启动基本服务,我们才可以通过使用nginx来做反向代理,只需要在ngixn上做简单的配置即可
server {
listen 8082; # 监听的端口号
server_name loaclhost; # 域名/ip
location / { # 路径
proxy_pass http://127.0.0.1:8000; # gunicorn中服务启动的ip和端口号
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
现在因为做了反向代理,访问的时候要使用nginx监听的端口和ip了(49.***.***.***:8082/test_url)
3-使用nginx只配置负载均衡
upstream gwcomments { # gwcomments这个名字是随意起的
server 127.0.0.1:8000 weight=1 max_fails=2 fail_timeout=30s; # 你自己启动的服务1
server 127.0.0.1:8001 weight=1 max_fails=2 fail_timeout=30s; # 你自己启动的服务2
}
server {
listen 8083;
server_name loaclhost;
location / {
proxy_pass http://gwcomments; # //后面不再是ip了,而是upstream后自定义名称
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
现在不仅做了反向代理,而且还有负载均衡,访问的时候要还是使用nginx监听的端口和ip了(49.***.***.***:8083/test_url)