gunicorn配置中bind字段指定具体值存在安全风险(硬编码IP)的解决方案

我的环境:

nginx---(反向代理)---gunicorn;

gunicorn使用supervisor管理;

建议方案二

方案一:将127.0.0.1:8000这个字符串定义成系统变量,读取系统变量

import multiprocessing
import os


bind = os.environ.get('BIND_ADDRESS')

#注意这个BIND_ADDRESS变量不是在/etc/profile、.bash_profile或.bashrc中定义,而是在supervisor中定义,具体定义为:  environment=BIND_ADDRESS=127.0.0.1:8000
workers = 8
backlog = 2048
worker_class = "gevent"
worker_connections = 1000
daemon = False
debug = True
proc_name = 'gunicorn'

方案二:使用套接字模式

import multiprocessing
import os


bind = 'unix:/var/run/gunicorn.sock'
workers = 8
backlog = 2048
worker_class = "gevent"
worker_connections = 1000
daemon = False
debug = True
proc_name = 'gunicorn'

nginx中添加如下配置:

【这个放在http下,必须要有这个】

upstream gunicorn {
    server unix:/var/run/gunicorn.sock;
   }

【这个放在server下】

location / {
        include uwsgi_params;
        proxy_pass  http://gunicorn/api/;
        error_page  404 /;
    }
 

你可能感兴趣的:(gunicorn)