Django Ratelimit不适用于UWSGI+NGINX,但适用于manage.py runserver

2024-05-15 02:55:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用了django ratelimit来防止对管理员登录页面的暴力攻击。当我使用python manage.py runserver并使用127.0.0.1:8000浏览时,django ratelimit可以完美地工作。但当我启动uwsgi和nginx并使用我的服务器IP(192.168.31.70:8080)登录时,django ratelimit不起作用:在管理员登录页面上没有登录限制

我猜这是缓存问题,可能是我在uwsgi或nginx上配置错误

请帮忙!提前谢谢

settings.py的一部分

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'import_export',
    'ckeditor',
    'ckeditor_uploader',
    'easy_thumbnails',
    'filer', #新闻管理用到了
    'gbzt_coms',
    'newspage',
    'accounts',
    'omsystem',
    #'config',
    'administration',
    'notifications',  # 待办提醒功能 
    'statistic',
    'debug_toolbar',
    'rangefilter',
    #'django_extensions',
    'ratelimit',
]

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'ratelimit-tests',
    },
}


# CACHES = {
#     'default': {
#         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
#         'LOCATION': '192.168.31.70:9090',
#     }
# }

# RATELIMIT_USE_CACHE = 'default'

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'ratelimit.middleware.RatelimitMiddleware',
] 

uwsgi.ini:

;static-map = /static=var/www/static

# clear environment on exit
vacuum          = true

# ... with appropriate permissions - may be needed
chmod-socket    = 666

# stat server
stats = 127.0.0.1:9191

#vhost    = true             #multi-site mode
#no-site  = true            #no entry module/file when multi-site mode
#workers  = 2                #sub process number
#reload-mercy = 10
#max-requests = 1000
#limit-as = 512
#buffer-size  = 30000

#env = LANG=UTF-8
#env = LC_ALL=UTF-8
#env = LC_LANG=UTF-8
#env = PYTHONIOENCODING=UTF-8

mysite_nginx.config:


# the upstream component nginx needs to connect to
upstream django {
    # server unix:///home/lirui/UWSGI_Practise/mysite; # for a file socket
     server 127.0.0.1:9090; # for a web port socket (we'll use this first)
}

# configuration of the server
server {
    # the port your site will be served on
    listen     8080;
    # the domain name it will serve for
    server_name _; # substitute your machine's IP address or FQDN
    charset     utf-8;

    # max upload size
    client_max_body_size 0;   # adjust to taste

    # Django media
    location /media  {
        alias /home/lirui/www/gbzt_coms_new/2/media;  # your Django project's media files - amend as required
    }

    location /static {
        alias /home/lirui/www/gbzt_coms_new/2/var/www/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
    #    keepalive 64;
        uwsgi_read_timeout 120s;
    uwsgi_send_timeout 120s;
    uwsgi_pass  django;
        include    /home/lirui/www/gbzt_coms_new/2/uwsgi/uwsgi_params; # /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed
    }
} ```

Tags: thetodjangoyourserverwwwnginxstatic

热门问题