很多程序员面试被问到nginx优化做过哪些,因此来记录下
配置文件样例为生产环境样例。
1、nginx基本优化
安装方式有2种:
1、源码包安装
2、yum(apt-get)安装
区别为如果用yum安装的话,很方便,并且基本不报错。如果对性能要求不是很高的话,可以采用这种安装方式(比如测试环境)
如果是源码包安装的话,因为在服务器上编译的软件,会让nginx的性能相对更高一些,建议生产环境使用源码包安装
基本配置优化(优化后配置样例,可以改后直接上生产)
#头部配置
如果是高并发架构,需要在nginx的服务器上添加如下的内核参数
这些参数追加到/etc/sysctl.conf,然后执行sysctl -p 生效。
#每个网络接口接收数据包速度比内核处理速度快的时候,允许发送队列数目数据包的最大数
net.core.netdev_max_backlog = 262144
#调节系统同时发起的tcp连接数
net.core.somaxconn = 262144
#该参数用于设定系统中最多允许存在多少TCP套接字不被关联到任何一个用户文件句柄上,主要目的为防止Ddos攻击
net.ipv4.tcp_max_orphans = 262144
#该参数用于记录尚未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_max_syn_backlog = 262144
#nginx服务上建议关闭(既为0)
net.ipv4.tcp_timestamps = 0
#该参数用于设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量,为了建立对端的连接服务,服务器和客户端需要进行三次握手,第二次握手期间,内核需要发送SYN并附带一个回应前一个SYN的ACK,这个参
数主要影响这个过程,一般赋予值为1,即内核放弃连接之前发送一次SYN+ACK包。net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
2、nginx配置lua,添加接口返回值,方便开发debug,
3、nginx配置https
#server端基本配置<br>server {
4、nginx配置反爬虫
#以下内容添加nginx虚拟主机配置里,proxypass之后<br><br>if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要请戳这里链接 或 者关注咱们下面的知乎专栏
PHP架构师圈子zhuanlan.zhihu.com