快捷搜索:

使用 Nginx 提升网站访问速度

本文主要先容若何在 Linux 系统上安装高机能的 HTTP 办事器 —— Nginx、并在不改变原有网站布局的前提下用 Nginx 来提升网站的造访速率。

Nginx 简介

Nginx ("engine x") 是一个高机能的 HTTP 和 反向代理 办事器,也是一个 IMAP/POP3/SMTP 代理办事器。 Nginx 是由 Igor Sysoev 为俄罗斯造访量第二的 Rambler.ru 站点开拓的,它已经在该站点运行跨越两年半了。 Igor 将源代码以类 BSD 许可证的形式宣布。只管照样测试版,然则,Nginx 已经由于它的稳定性、富厚的功能集、示例设置设置设备摆设摆设文件和低系统资本的耗损而驰誉了。

根据最新一期(08 年 6 月份)的 NetCraft 查询造访申报显示,已经有跨越两百万的主机应用了 Nginx,这个数字跨越了别的一个轻量级的 HTTP 办事器 lighttpd, 排名第四,并且成长迅速。下面是这份申报的前几名的报表:

产品

网站数

Apache

84,309,103

IIS

60,987,087

Google GFE

10,465,178

Unknown

4,903,174

nginx

2,125,160

Oversee

1,953,848

lighttpd

1,532,952

关于这期查询造访申报的更具体信息请看下面链接:

http://survey.netcraft.com/Reports/200806/

下图是近来几个月应用 Nginx 和 lighttpd 的网站数对照

图 1. 近来几个月应用 Nginx 和 lighttpd 的网站数对照

应用 Nginx 前必须懂得的事变

1.今朝官方 Nginx 并不支持 Windows,您只能在包括 Linux、UNIX、BSD 系统下安装和应用;

2.Nginx 本身只是一个 HTTP 和反向代理办事器,它无法像 Apache 一样经由过程安装各类模块来支持不合的页面脚本,例如 PHP、CGI 等;

3.Nginx 支持简单的负载均衡和容错;

4.支持作为基础 HTTP 办事器的功能,例如日志、压缩、Byte ranges、Chunked responses、SSL、虚拟主机等等,应有尽有。

在 Linux 下安装 Nginx

为了确保能在 Nginx 中应用正则表达式进行更机动的设置设置设备摆设摆设,安装之前必要确定系统是否安装有 PCRE(Perl Compatible Regular Expressions)包。您可以到 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,应用下面敕令下载编译和安装 PCRE 包:

# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz

# tar zxvf pcre-7.7.tar.gz

# cd pcre-7.7

# ./configure

# make

# make install

接下来安装 Nginx,Nginx 一样平常有两个版本,分手是稳定版和开拓版,您可以根据您的目的来选择这两个版本的此中一个,下面是把 Nginx 安装到 /opt/nginx 目录下的具体步骤:

# wget http://sysoev.ru/nginx/nginx-0.6.31.tar.gz

# tar zxvf nginx-0.6.31.tar.gz

# cd nginx-0.6.31

# ./configure --with-http_stub_status_module –prefix=/opt/nginx

# make

# make install

此中参数 --with-http_stub_status_module 是为了启用 nginx 的 NginxStatus 功能,用来监控 Nginx 确当前状态。

安装成功后 /opt/nginx 目录下有四个子目录分手是:conf、html、logs、sbin 。此中 Nginx 的设置设置设备摆设摆设文件寄放于 conf/nginx.conf,Nginx 只有一个法度榜样文件位于 sbin 目录下的 nginx 文件。确保系统的 80 端口没被其他法度榜样占用,运行 sbin/nginx 敕令来启动 Nginx,打开浏览器造访此机械的 IP,假如浏览器呈现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。

常用的 Nginx 参数和节制

法度榜样运行参数

Nginx 安装后只有一个法度榜样文件,本身并不供给各类治理法度榜样,它是应用参数和系统旌旗灯号机制对 Nginx 进程本身进行节制的。 Nginx 的参数包括有如下几个:

-c

:应用指定的设置设置设备摆设摆设文件而不是 conf 目录下的 nginx.conf 。

-t:测试设置设置设备摆设摆设文件是否精确,在运行时必要从新加载设置设置设备摆设摆设的时刻,此敕令异常紧张,用来检测所改动的设置设置设备摆设摆设文件是否有语法差错。

-v:显示 nginx 版本号。

-V:显示 nginx 的版本号以及编译情况信息以及编译时的参数。

例如我们要测试某个设置设置设备摆设摆设文件是否书写精确,我们可以应用以下敕令

sbin/nginx – t – c conf/nginx2.conf

经由过程旌旗灯号对 Nginx 进行节制

Nginx 支持下表中的旌旗灯号:

旌旗灯号名

感化描述

TERM, INT

快速关闭法度榜样,中止当前正在处置惩罚的哀求

QUIT

处置惩罚完当前哀求后,关闭法度榜样

HUP

从新加载设置设置设备摆设摆设,并开启新的事情进程,关闭就的进程,此操作不会中断哀求

USR1

从新打开日志文件,用于切换日志,例如天生成成一个新的日志文件

USR2

平滑进级可履行法度榜样

WINCH

安闲关闭事情进程

有两种要领来经由过程这些旌旗灯号去节制 Nginx,第一是经由过程 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID,经由过程 kill – XXX

来节制 Nginx,此中 XXX 便是上表中列出的旌旗灯号名。假如您的系统中只有一个 Nginx 进程,那您也可以经由过程 killall 敕令来完成,例如运行 killall – s HUP nginx 来让 Nginx 从新加载设置设置设备摆设摆设。

设置设置设备摆设摆设 Nginx

先来看一个实际的设置设置设备摆设摆设文件:

usernobody;# 事情进程的属主

worker_processes4;# 事情进程数,一样平常与 CPU 核数等同

#error_loglogs/error.log;

#error_loglogs/error.lognotice;

#error_loglogs/error.loginfo;

#pidlogs/nginx.pid;

events {

use epoll;#Linux 下机能最好的 event 模式

worker_connections2048;# 每个事情进程容许最大年夜的同时连接数

}

http {

includemime.types;

default_typeapplication/octet-stream;

#log_formatmain'$remote_addr - $remote_user [$time_local] $request '

#'"$status" $body_bytes_sent "$http_referer" '

#'"$http_user_agent" "$http_x_forwarded_for"';

#access_logoff;

access_loglogs/access.log;# 日志文件名

sendfileon;

#tcp_nopushon;

tcp_nodelayon;

keepalive_timeout65;

include gzip.conf;

# 集群中的所有后台办事器的设置设置设备摆设摆设信息

upstream tomcats {

server 192.168.0.11:8080 weight=10;

server 192.168.0.11:8081 weight=10;

server 192.168.0.12:8080 weight=10;

server 192.168.0.12:8081 weight=10;

server 192.168.0.13:8080 weight=10;

server 192.168.0.13:8081 weight=10;

}

server {

listen80;#HTTP 的端口

server_namelocalhost;

charset utf-8;

#access_loglogs/host.access.logmain;

location ~ ^/NginxStatus/ {

stub_status on; #Nginx 状态监控设置设置设备摆设摆设

access_log off;

}

location ~ ^/(WEB-INF)/ {

deny all;

}

location ~ \.(htm|html|asp|php|gif|jpg|jpeg|png|bmp|ico|rar|css|js|

zip|java|jar|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {

root /opt/webapp;

expires 24h;

}

location / {

proxy_pass http://tomcats;# 反向代理

include proxy.conf;

}

error_page 404 /html/404.html;

# redirect server error pages to the static page /50x.html

#

error_page 502 503 /html/502.html;

error_page 500 504 /50x.html;

location = /50x.html {

roothtml;

}

}

}

您可能还会对下面的文章感兴趣: