本文是一个索引,博主最近在使用nginx,踩了不少坑,总结了很多博文,有点混乱,因此写下这篇文章作为之前博文的索引,方便以后阅读
1. 安装
2.配置文件说明
3.部署网站
注:nginx不管是与Python、nodejs还是PHP联合使用,本质都是反向代理,流程:
- 运行Python、nodejs、PHP应用,监听某个端口;
- 打开nginx,监听80端口,来请求时,nginx会根据域名转发(多虚拟主机)到对应的程序监听端口上(反向代理);
- 程序接收到请求,开始处理请求,然后返回;
4.建议配置项
- 打开gzip on;
- 限制某个ip访问频率(避免ddos和多线程爬虫);
- 配置日志
error_log /var/log/nginx/error_debug.log debug;
error_log /var/log/nginx/error_warn.log warn;
error_log /var/log/nginx/error.log error;
- 网络序列化,避免惊群
accept_mutex on;
- 限制请求头(防止爬虫)
vim /etc/nginx/conf.d/agent_deny.conf
添加以下内容:
#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "WinHttp|WebZIP|FetchURL|node-superagent|java/|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Java|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|Linguee Bot|^$" ) {
return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
参考:https://blog.csdn.net/slovyz/article/details/73243926