以下是我带给你的NGINX的一些记录,因为我可能要换工作了。面试的时候我会问他们,总有人问我他要给公司配置NGINX,我就记下来。
一、nginx的安装
安装前的一些准备工作
[root@taotao2016 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@taotao2016 ~]#YUMpcrepcre-DEVEL-Y#先安装PCRE,它是nginx重写模块使用的,必须安装。
安装yumopenssl-developenssl#这个也需要yum直接安装在我用的7系统上。
添加usernginx-s/sbin/nologin-m#来建立ningx用户
开始安装。
Nginx-1.11.3.tar.gz下载地址
。/configure-user=nginx-group=nginx-prefix=/usr/local/nginx-1.11.3-with-http_stub_status_module-with-http_SSI_module#安装目录加版本号
制造和销售。&进行安装
这就完成了安装。
[root@taotao2016 nginx-1.11.3]# cd /usr/local/ [root@taotao2016 local]# ls bin etc games include lib lib64 libexec nginx-1.11.3 python3 sbin share src [root@taotao2016 local]# cd nginx-1.11.3/ [root@taotao2016 nginx-1.11.3]# ls conf html logs sbin [root@taotao2016 nginx-1.11.3]# cd sbin/ [root@taotao2016 sbin]# ls nginx [root@taotao2016 sbin]# ./nginx -t nginx: the configuration file /usr/local/nginx-1.11.3/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx-1.11.3/conf/nginx.conf test is successful 直接执行bin下面的nginx就启动了服务 [root@taotao2016 sbin]# netstat -anlpt Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4801/nginx: master尝试访问:
体验:
Ln-snginx-1.11.3nginx#建立软连接后,升级然后直接将nginx指向新版本。
#安装时请参考其他模块的官方文档。
二:配置重写
nginx
该模块由安装过程中使用的pcre软件提供。
Rewrite指定语法;重写regex替换[flag]应用程序位置服务器,位置,如果
此指令根据表达式重定向URI,或者修改字符串。根据配置文件中的顺序执行指令。请注意,重写表达式仅对相对路径有效。如果要配对主机名,应该使用If语句,示例如下:
先说以下对flag的描述:
1.last相当于apache中的[L]标记,表示重写。
2.break该规则匹配完成后,匹配将终止,后面的规则将不再匹配。
3.redirect返回302临时重定向,跳转后浏览器地址会显示URL地址。
4.永久返回301永久重定向,浏览器地址跳转后会显示URL地址。
例:重写/(。*)http://www.daxia.help/永久居民;#rewrite是regex部分/(。*)的关键字。这是一个正则表达式,表示匹配。于是,匹配成功后,跳转到后面替换的部分,也就是www.daxia.help这个域名就是简单的参考前面的内容写的(),永久是301永久跳转,告诉搜索引擎。
Http://www.linuxidc.com/Linux/2014-01/95493.htm这里有详细的配置。我今天有点困。改天我会补充更多的细节。
三:日志配置
#log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'
#'$status$body_bytes_sent"$http_referer"'
#'"$http_user_agent""$http_x_forwarded_for"';
Log_format是定义日志格式的关键字。主要是标签。remote_addr是记录访问客户端的地址。远程用户是远程访问客户端的名称。time_local是日期。请求是http的起始行的信息。
http的状态码,比如200404,body-bytes_set是服务器发送给客户端的正文字节数。http_referer记录这个访问来自那个链接,用来设置防盗链。
Http_user_agent用于记录浏览器信息,如手机或谷歌Chrome360浏览器等。http_x_forwarded_for用于设置这个录音客户端在有代理时的真实地址。
access_log配置语法:access_logpath[format[buffer=size[flush=time]][if=condition];access_log路径格式gzip[=level][buffer=size][flush=time][if=condition];access_logsyslog:server=address[paarmeter=value][format[if=condition]];
Buffer=size是存储访问日志的缓冲区大小,flush=time是日志刷新到硬盘的时间,gzip[level]表示压缩级别[if=condition]表示其他条件,一般不需要配置。
access_logoff是关闭日志记录。日志记录可应用于http服务器位置\ifinlocaton\limit_except。
示例:access_loglogs/access_www.logmaingzipbuffer=32kflush=5s;
Http://www.linuxidc.com/Linux/2014-12/110989.htm原木切割
探视日:
#!bin/sh Dateformat=`date +%Y%m%d` Basedir="/usr/local/nginx" Nginxlogdir="$Basedir/logs" Logname="access_www" [ -d $Nginxlogdir ] && cd $Nginxlogdir || exit 1 [ -f ${Logname}.log ] || exit 1 /bin/mv ${Logname}.log ${Dateformat}_${Logname}.log $Basedir/sbin/nginx -s reload ##就是把日志文件移动到另外个文件在重启加载下nginx的配置 重新生成日志 最后把脚本放到crontab里面定时执行就行了四。位置配置
Ngxlocation语法
基本语法:location[=|||~*|]/uri/{…}
=完全匹配。如果该查询匹配,搜索将停止,请求将立即得到处理。
~区分大小写(正则表达式可用)
~*用于不区分大小写的匹配(正则表达式可用)
!~还有!~*区分大小写的不匹配和不区分大小写的不匹配。
~如果对正则字符串使用这个前缀,告诉nginx如果路径匹配就不要测试正则表达式。
http://www.cnblogs.com/lidabo/p/4169396.html
http://www.linuxidc.com/Linux/2015-06/119398.htm
五:nginx的一些简单优化
删除版本信息:
将server_tokensoff添加到http标记中;或者打开和关闭默认设置。
如果修改源代码的配置,在nginx-1.11.3/src/core/nginx.h中。
/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #ifndef _NGINX_H_INCLUDED_ #define _NGINX_H_INCLUDED_ #define nginx_version 1011003 #define NGINX_VERSION "1.11.3" 把这里修改了就行修改成自己喜欢的版本 2.22.6比如 #define NGINX_VER "nginx/" NGINX_VERSION #ifdef NGX_BUILD #define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")" #else #define NGINX_VER_BUILD NGINX_VER #endif #define NGINX_VAR "NGINX" ###这里也能修改成其他软件比如叫小芳软件 xiaofang #define NGX_OLDPID_EXT ".oldbin" #endif /* _NGINX_H_INCLUDED_ */还有文件nginx-1.11.3/src/http/ngx_http_header_filter_module.c。
staticcharngx_http_Server_string[]="Server:nginx"CRLF;##将这行中的nginx改为您自己的名字
最后一个文件是ngx_http_special_response.c也在上面的目录:
“<hr><中心>NGINX_VER"<;/center>CRLF#此处改为“
NGINX_VER(www.daxia.help)"<;/center>换行符
“<hr><中心>nginx</center>CRLF#替换为“
换行符
然后重新编译安装okl。
修改默认的nobody用户,使用你知道的nginx。
优化nginx的工作进程数量:
worker_process1;指定nginx打开的进程数一般是cpu核数的*(1-2)。
优化不同nginx进程与不同CPU的绑定;
例如:
工作进程4;
worker_CPU_affinity0001001001001000;
可以查看官方说明。
nginx加工模型的优化:
一般linux选择epoll,BSD系统使用kqueue看官网说明。
调整nginx单个进程打开的最大客户端连接数。
worker_connections20480
#Default1024公式Max_client=worker_processes*worker_connections进程的最大连接数受linux系统中打开文件的最大数量限制ulimit-HSn65535
配置nginx工作进程的最大打开文件数。
worker_rlimit_文件号;
worker_rlimit_nofile65535ulimit-HSn设置是相同的。
优化服务器域名的哈希表大小:
服务器名称哈希桶大小64;
服务器名称哈希最大大小128;
打开高效文件传输:
打开发送文件
优化连接参数。调整超时。
keepalive_timeout75s系统默认值
上传文件大小的设置:
client_max_body_size8m
这个先困了!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)