nginx的配置与优化
来源:互联网 发布:网眼免费空间域名绑定 编辑:程序博客网 时间:2024/05/21 11:06
在linux系统中,本文假设nginx安装在/xxx目录下
1、配置文件位于/xxx/conf/nginx.conf 。配置文件的主要结构如下,并详细讲解两种类型的虚拟主机的配置,关于什么是虚拟主机就不介绍了
events{
......
}
http{
server{// 用于配置虚拟主机,基于IP的虚拟主机
listen 192.168.0.2:80 //监听的ip和端口,可以不写IP,表示在所有IP的80端口上监听
server_name 192.168.0.2 //主机名称,通过servername区分不同的主机
access_log logs/server1 //访问日志文件存放路径
location {
index index.html index.htm //默认首页文件,顺序从左到右
root /xxx/htdocs/server1 //html页面文件存放的目录
}
}
server{ //基于域名的虚拟主机的配置
listen 80 //监听的端口
server_name domain.com //主机名称
access_log logs/server1 //访问日志文件存放路径
location {
index index.html index.htm //默认首页文件,顺序从左到右
root /xxx/htdocs/server1 //html页面文件存放的目录
}
}
2、详细介绍nginx日志文件配置与切割
主要有两条指令与nginx日志相关,一是log_format,用于设置日志的格式,一是access_log,用于指定日志文件的存放路径、格式和缓存大小。可放在配置文件的http{ }、也可在虚拟主机之间。
(1) log_format的语法如下: log_format name format [ format...... ]
其中name表示定义的格式名称,format表示定义的格式的样式。
如:log_format mylog ‘$remote_addr’ ' $status' //remoteaddr用于记录实际访问的IP,status用于记录请求状态。具体的可配置的参数很多,可以查资料阅读,在此就不一一叙述了.
(2)access_log 语法如下
access_log path [ format [ buffer=size | off ] ]
其中path表示日志存放的路径,format表示使用log_format指令设计的日志格式的名称,buffer表示设置内存缓存区的大小,如果不想使用日志,可以选择off关闭。
(3) 日志文件的切割
在一个高仿问量的服务器中,访问日志文件增长速度非常快。需要定期对日志进行切割,可使用下面命令
mv 日志目录/name.log 日志目录/name1.log //mv命令将配置的日志文件name.log重命名为name1.log
kill -USER1 nginx主进程号 // 发送命令让nginx重新生成一个日志文件。
可以写一个脚本让服务器定期进行日志切割。
3、nginx的压缩输出配置
gzip压缩技术,通过压缩后,可以更快的在网络中传输,加快用户的访问速度。配置指令位于http{ ....}之间。指令如下:
gzip on ;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
4、nginx的浏览器本地缓存设置
expires [ time|epoch|max|off ]
用于控制浏览器缓存的过期时间。
time: 可正可负,表示当前时间加上time
epoch:指定时间为1970年。
max:指定时间为2037年。
off:表示不修改expires 和cache-control的值。
在实际中,可以针对不同类型的文件设置不同的expires,如对js文件和图片文件等很少表化的文件设置较长的expires。
如 location ~.*\ .(js|css)?${ expires 1h; }
5、LNMP 环境搭建
本环境实在ubuntu12.04下进行的
(1) 安装php和MySQL:
sudo apt-get install php5-cli php5-cgi mysql-server-5.5 php5-mysql (2) 安装fastcgisudo apt-get install spawn-fcgi (3) 修改配置文件,去掉nginx.conf中下列指令前的#。location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; include /etc/nginx/fastcgi_params; } (4)重启nginx kill -HUP nginx主进程号 ; 如果配置了系统自动启动可以执行 /etc/init.d/nginx stop (5)启动fastcgispawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi 为了让php-cgi开机自启动:Ubuntu开机之后会执行/etc/rc.local文件中的脚本所以我们可以直接在/etc/rc.local中添加启动脚本。 spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi添加到语句:exit 0 前面才行。 为了测试是否安装成功可以在index.php文件中添加 <?php phpinfo(); ?> ,以显示php的配置信息。 注意:在完成了以上配置后,运行php代码,可能会出现“no input file speciy” ,具体的错误原因是在Nginx的配置文件中, fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 是一个写在location块(通常是匹配php)中的指令语句。 在nginx中,有三级的关系,http > server > location。 如果要在location块中使用$document_root,需要在上层server块或http块中定义了root指令,这样才能通过继承关系, 在location块中用$document_root拿到root的值。而定义在别的location块中的root指令的值,是一个局部变量, 其值无法在匹配php的这个location块中被获取。 因此,解决这个问题的办法,是把"/" location块中的root上提到server。或者,在php的location块中,重新定义root。 本文主要参考 Ubuntu 官方 wiki 的《 Nginx 的教程》以及Google,以及张宴老师的书籍《实战nginx》,在此一一感谢他们。
- nginx的配置与优化
- Nginx配置与优化
- nginx配置与优化
- 3.nginx 的基本配置与优化
- nginx的配置优化
- nginx配置的优化
- Nginx基本配置与优化
- Nginx与PHP(FastCGI)的安装、配置与优化
- Nginx与PHP(FastCGI)的安装、配置与优化
- Nginx与PHP(FastCGI)的安装、配置与优化
- Nginx与PHP(FastCGI)的安装、配置与优化
- Nginx与PHP(FastCGI)的安装、配置与优化
- Nginx配置优化与系统内核优化
- Nginx与PHP(FastCGI)的安装、配置和优化
- nginx的优化配置参数
- Nginx的SSL配置优化
- 【Nginx】Nginx配置优化
- Nginx 与 Tomcat 配置及优化
- USTC 1351 逆袭
- container_of分析
- VC下的nmake
- OpenGL进阶(一)多视口
- 装饰模式
- nginx的配置与优化
- JAVA之Myeclipse中Junit、静态导入、枚举和单例设计模式
- 黑客可追踪你的鼠标轨迹
- 为什么谷歌要将苹果扶上王位?
- Linux内核链表的研究与应用
- 霍金等要求正式为图灵平反
- 条形码发明之父在美去世
- C#的序列化和反序列化
- Ubuntu12.04 无法调节并保存屏幕亮度解决办法