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