2019独角兽企业重金招聘Python工程师标准>>>
LNMP的调优着重体现在Nginx服务器上的调优,Linux内核调优有专门的课程为大家讲解,Mysql和PHP的调优方式和LAMP的中的调试方式雷同!
Nginx编译前的优化
# tar xvf nginx-1.9.12.tar.gz -C /usr/local/src/
# cd /usr/local/src/nginx-1.9.12/
编译前的优化主要是用来修改程序名等等,例如:
[root@local nginx-1.9.12]# curl -I http://www.baidu.com
……
Server: BWS/1.1
……
[root@local nginx-1.9.12]# curl -I http://www.sina.com.cn
……
Server: nginx
……
[root@local nginx-1.9.12]# curl -I http://www.ccnn.cn
HTTP/1.1 200 OK
Server: nginx/1.6.2 #我们目标是将nginx更改名字
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.4.45
Set-Cookie: PHPSESSID=smm0i6u4f9v7bj0gove79ja1g7; path=/
Cache-Control: no-cache
Date: Mon, 07 Mar 2016 06:09:11 GMT
[root@local nginx-1.9.12]# vim src/core/nginx.h //目的更改源码隐藏软件名称和版本号
#define NGINX_VERSION "999.999.999" #此行修改的是你想要的版本号
#define NGINX_VER "WS/" NGINX_VERSION #此行修改的是你想修改的软件名称
[root@local nginx-1.9.12]# vim src/http/ngx_http_header_filter_module.c
//修改HTTP头信息中的connection字段,防止回显具体版本号
拓展:通用http头域
通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。那么也就是说有部分设备,或者是软件,能获取到connection,部分不能,要隐藏就要彻底!
static char ngx_http_server_string[] = "Server: WBS" CRLF;
[root@local nginx-1.9.12]# vim src/http/ngx_http_special_response.c
//这个文件定义了http错误码的返回,有时候我们页面程序出现错误,Nginx会代我们返回相应的错误代码,回显的时候,会带上nginx和版本号,我们把他隐藏起来
static u_char ngx_http_error_full_tail[] =
"
" NGINX_VER " " CRLF
"