nginx配置之location之反向代理以及负载均衡

有些新手朋友问我反响代理和负载均衡如何使用,那么记录一下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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章