使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址
生产环境有时,并不是为了一个项目而存在的。毕竟,域名是比较稀有的。
今天遇到这个问题,解决了。作个记录。
并且,如果将django项目部署在Nginx后面,那如何获取用户真实的IP地址呢?
下面就来解决吧。
一,gunicorn.ini的编写
bind = "127.0.0.1:xxxx" workers = 4 errorlog = './gunicorn.error.log' accesslog = './gunicorn.access.log' timeout = 3000 loglevel = 'debug' proc_name = 'gunicorn_proc' access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' daemon = True worker_connections = 1000 max_requests = 2000 graceful_timeout = 300 #loglevel = 'info'
二,nginx配置
location /abc/ {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:xxxx;
}
location ^~ /abc/static {
alias /xxx/abc/static;
}
三,顺便,启停gunicorn的命令
gunicorn -c gunicorn.ini acsctl.wsgi pkill - gunicorn
四,settings.py文件更改(注意DEBUG关闭及ALLOW_HOSTS打开)
STATIC_URL = '/abc/static/' LOGIN_URL = '/abc/accounts/login/'
五,urls.py里,记得带上子目录前缀
。。。。
path('abc/accounts/login/', user_login, name='login'),
。。。。
六,获得用户浏览器真实IP
try:
real_ip = self.request.META['HTTP_X_FORWARDED_FOR']
if len(real_ip) > 1:
ip = real_ip.split(",")[0]
except Exception as e:
try:
ip = self.request.META['REMOTE_ADDR']
except Exception as e:
ip = "0.0.0.0"
使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址的更多相关文章
- flask项目部署到生产环境的方案
背景 使用Python+flask编写的一个小项目,在本地开发完毕后,需要部署到测试服务器上,这时候犯难了,因为之前没部署过这块东西,所以各种百度,总算是部署成功了,也对这个项目进行了jenkins持 ...
- Laravel 5 项目部署到生产环境的实践
作者:mrcn链接:https://www.zhihu.com/question/35537084/answer/181734431来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- Django项目部署(django+guncorn+virtualenv+nginx)
一.说明 为了django项目部署到生产环境上,能够稳定的运行,且能够同时指出http和https的访问,对django的部署进行了一些研究,决定采用django + gunicorn + virtu ...
- Django项目部署在Linux下以进程方式启动
Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...
- Django项目部署(阿里云)(1)--基本功能实现
新博客地址:http://muker.net/django-server.html 手头需要部署一个Django项目,前面的博客也因为偷懒也没有部署,这里记录一下部署过程.ps:其实网上比较靠谱的说明 ...
- django项目部署过程
django项目部署过程 1.上传代码 用git或者其他工具,如scp 代码上传后保证每个应用下的migrations文件夹里只有一个__init__.py文件,自己的迁移文件不要上传上来,具体的gi ...
- Windows下django项目部署 通过Apache2.4+mod_wsgi
经过几天踩坑,记录在Windows10下通过Apache2.4部署Django项目的过程 运行环境: 先说下环境,怎么安装倒是其次的,版本很重要,我是根据mod_wsgi的版本要求下载的各个版本(py ...
- Greenplum 数据库安装部署(生产环境)
Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...
- 转_Greenplum 数据库安装部署(生产环境)
Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...
随机推荐
- liunx必知必会(1)
一.liunx目录结构: (1)/bin中 - 用户二进制文件 包含二进制可执行文件. 在单用户模式下,你需要使用的常见Linux命令都位于此目录下.系统的所有用户使用的命令都设在这里. (2)/sb ...
- java了解哪些锁
问题: 1.Java里的锁了解哪些? 说了Lock和synchronized 它们的使用方式和实现原理有什么区别呢?使用的话,synchronize用于方法和代码块,可以锁对象和类以及方法,Lock ...
- 浅谈分词算法(5)基于字的分词方法(bi-LSTM)
目录 前言 目录 循环神经网络 基于LSTM的分词 Embedding 数据预处理 模型 如何添加用户词典 前言 很早便规划的浅谈分词算法,总共分为了五个部分,想聊聊自己在各种场景中使用到的分词方法做 ...
- oracle先排序再分页
只做简单记录 按操作时间排序1 SELECT A.*, ROWNUM RN FROM (SELECT * FROM v_log) A ORDER BY operatetime DESC 结果 可以发现 ...
- __weak 修饰符
在 HAL 库中,很多回调函数前面使用__weak 修饰符,这里我们有必要给大家讲解__weak 修饰符的作用. weak 顾名思义是“弱”的意思,所以如果函数名称前面加上__weak 修饰符,我们一 ...
- QWidget窗口类
import sys from PyQt5.QtWidgets import QWidget, QApplication,QPushButton from PyQt5.QtGui import QIc ...
- loadrunner函数解密之web_reg_save_param
loadrunner工具的使用,最关键的在于3个地方: A:脚本的编写 B:场景设计 C:性能测试结果分析 其 中难度比较大的第一步是:编写脚本,有很多人对于loadrunner里面的各种函数使用的并 ...
- Java垃圾回收机制复习
一.如何确定某个对象是“垃圾” 二.典型的垃圾收集算法 三.典型的垃圾收集器 JVM(HotSpot) 7种垃圾收集器的特点及使用场景 https://www.cnblogs.com/chengxuy ...
- try 、catch 、finally 、throw 测试js错误
try语句允许我们定义在执行时进行错误测试的代码块. catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块. finally 语句在 try 和 catch 之后无论有无异常都会执 ...
- Java导出List集合到txt文件中——(四)
有时候,需要将数据以一定格式导出到txt文件中.利用Java的IO可以轻松的导出数据到txt中. package Action.txt; import java.io.BufferedWriter; ...