标签归档:proxy-admin

django web界面管理nginx配置


2019年12月14日 13:58:44   1,426 次浏览

1、安装Nginx

yum install -y nginx (centos)

apt install -y nginx (debian)

 

也可以使用tengine来代替nginx,以下是通过limit_conn_zone 和limit_req_zone两个组件来对客户端访问频率和次数进行限制,具体如何使用要结合公司业务环境进行配置。善用此模块能够对 cc、ddos爬虫等此类的攻击进行有效的防御。

upstream {{ ups_name }} { {% for up in ups %}
   server {{ up }};{% endfor %}
}
limit_req_zone $binary_remote_addr zone=one:3m rate=10r/s;
limit_req_zone $binary_remote_addr $uri zone=two:3m rate=10r/s;
limit_req_zone $binary_remote_addr $request_uri zone=three:3m rate=10r/s;
limit_req_zone $binary_remote_addr $request_uri zone=four:3m rate=$limit_count;
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
server {
   listen {{ server_port }} ;
   server_name {{ server_name }} ;
   error_page      404  /errors/404.html;
   error_page      403  /errors/403.html;
   location / {
       proxy_redirect off;
       proxy_pass http://{{ ups_name }};
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       #add_header Cache-Control no-cache;
       #expires -1;
       # 限制连接数,同一个ip最大连接数20
       limit_conn conn_limit_per_ip 20;
       # 限流,同一个ip每秒最大请求数10次
       limit_req zone=one burst=5;
       limit_req zone=two forbid_action=@403;
       limit_req zone=three burst=3 forbid_action=@test2;
       set $limit_count "10r/s";
       if ($http_user_agent ~* "Android") {
           set $limit_count "1r/s";
       }
       if ($http_user_agent ~* "Iphone") {
           set $limit_count "100r/s";
       }
       limit_req zone=four burst=3 forbid_action=@test2;
    }
   location @403 {
        rewrite ^ /403.html;
   }
   location @test2 {
        rewrite ^ /test2.html;
   }
 }
}

2、 克隆git项目nginx-proxy-manager

git clone https://github.com/gujiwork/nginx-proxy-manager.git

3 、检查你的python版本

python -V or python3 -V

4 、初始化应用

"bash config/init.sh" or "sudo sh config/init.sh"

5、 运行项目

python manage.py runserver


web http://127.0.0.1:8000/nginx/index/

6、 从web管理界面编辑nginx.conf配置文件

add "include /etc/nginx/sites-enabled/*.conf;" in http{ } config

append in end

"stream { include /etc/nginx/sites-enabled/*.stream; }"

 

验证配置文件是否生成到本地磁盘

cat /etc/nginx/sites-enabled/ngx_H72E4ABX.conf