高性能web服务器nginx---实战篇

 

Nginx设计架构图:

技术分享


2、安装

  2.1 Nginx依赖关系

yum install -y openssl-devel pcre-devel libevent

 

  2.2 安装nginx依赖pcre,使Nginx支持HTTP Rewrite模块

tar xf pcre-VERSION.tar.gz

cd pcre-VERSION

./configure

make && make install

 

 2.3  Nginx编译安装

 

# 添加Nginx系统用户

useradd -r -s /sbin/nologin -M nginx

 

tar xf nginx-1.6.2.tar.gz

cd nginx-1.6.2

./configure \

--prefix=/usr/local/nginx \

--conf-path=/etc/nginx/nginx.conf \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--pid-path=/var/run/nginx/nginx.pid  \

--lock-path=/var/lock/nginx.lock \

--user=nginx \

--group=nginx \

--with-http_ssl_module \

--with-http_stub_status_module \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/tmp/nginx/client \

--http-proxy-temp-path=/var/tmp/nginx/proxy \

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \

--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

--http-scgi-temp-path=/var/tmp/nginx/scgi \

--with-pcre

 

make && make install

 

# Nginx PATH环境变量

echo ‘export PATH=/usr/local/nginx/sbin:$PATH‘ > /etc/profile.d/nginx.sh

. /etc/profile.d/nginx.sh


3、配置

3.1 Nginx配置文件结构:

技术分享

 

3.2 配置文件详解


3.3 日常维护技巧

配置正确性检查

nginx启动、关闭、重启

3.4 开启目录浏览功能

例如:

localtion /soft {

# 开启Nginx目录浏览功能

autoindex on;

# 文件大小从KB开始显示

autoindex_exact_size off;

# 显示文件修改时间为服务器本地时间

autoindex_localtime on;

}

4nginx常用功能

反向代理

1、多域名跳转应用实例

2Nginx重定向实现新旧域名过渡

rewrite

if ($host != ‘www.sharelinux.cn‘) {

rewrite ^/(.*)$ http://www.sharelinux.com/$1permanent;

}

3alias root 区别 举例说明

4Location命令应用配置

=

/

^~

~*

匹配模式、匹配优先级举例

 

URL重写

1if命令

2rewrite命令

3set命令

4break命令

模块

5、案例:web缓存服务器

nginx_ngx_cache-2.1.tar.gz

--add-module

6、案例:负载均衡器

负载均衡算法

轮询、weightip_hashfairurl_hash

HTTP Upstream

downbackupmax_failsfail_timeout

调度器算法为ip_hash时,后端服务器在负载均衡器调度中的状态不能是weightbackup

 

upstream myserver{

server 192.168.1.11:80 weight=3 max_fails=3 fail_timeout=20s;

server 192.168.1.12:80 weight=1 max_fails=3 fail_timeout=20s;

server 192.168.1.13:80 weight=4 max_fails=3 fail_timeout=20s;

}

 

location / {

proxy_pass http://myserver;

proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;

include conf/proxy.conf;

}

proxy_next_upstream 参数定义故障转移策略,当后端服务器节点返回500,502503504、和执行超时等错误时,自动将请求转发到upstream负载均衡组中的另一台服务器,实现故障转移。

 

7nginx性能优化技巧

1、减小编译后的文件大小

关闭debug模式

2、为特定CPU指定CPU类型编译优化

在编译Nginx时,默认的FCC编译参数是"-o",要优化GCC编译,可以使用以下两个参数

--with-cc-opt=‘-O3‘

--with-cpu-opt=CPU 

# 为特定的CPU编译,有效的值包括:

# pentiumpentiumpropentium3pentium4athlonopteronamd64sparc32sparc64ppc64

确定CPU类型:cat /proc/cpuinfo |grep "model name"

3TCMalloc优化Nginx的性能 Thread-Caching Malloc

开源工具 google-perftools

与标准的glibc库的malloc相比,TCMalloc库在内存分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况向的性能,从而减低系统负载。为Nginx添加TCMalloc库支持。

 

安装TCMalloc库,需要安装libunwind(32位操作系统不需要安装)google-perftools两个软件包,libunwind库为基于64CPU和操作系统的程序提供了基本函数调用链和函数调用寄存器功能。

 

3.1、按libunwind

下载:http://download.savannah.gnu.org/releases/libunwind/

http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz

tar xf libunwind-1.1.tar.gz

cd libunwind-1.1

CFLAGS=-fPIC ./configure

make CFLAGS=-fPIC

make CFLAGS=-fPIC install

 

3.2google-perftools

https://code.google.com/p/gperftools/

https://googledrive.com/host/0B6NtGsLhIcf7MWxMMF9JdTN3UVk/gperftools-2.2.tar.gz

tar xf gperftools-2.2.tar.gz

cd gperftools-2.2

./configure

make && make install

echo ‘/usr/local/lib‘/etc/ld.so.conf.d/usr_local_lib.conf

ldconfig

 

3.3、重新编译Nginx,在编译安装过程中添加"--with-google_perftools_module"选项重新编译Nginx

./configure --prefix=/usr/local/nginx --with-google_perftools_module --with-http_stub_status_module

make && make install

 

3.4、为google-perftools添加线程目录

mkdir -p /tmp/tcmalloc

chmod 0777 /tmp/tcmalloc

 

3.5、修改Nginx主配置文件,在pid这一行添加如下代码:

# pid logs/nginx.pid;

google_perftools_profiles /tmp/tcmalloc;

 

3.6、验证运行状态

lsof -n | grep tcmall

 

4Nginx内核参数优化

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp.ip_local_port_range = 1024 65000

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_syncookies = 1

net.core.somaxconn = 262144

net.core.netudv_max_backlog = 262144

net.ipv4.tcp_max_orphans = 262144

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_fin_timeout = 1

net.ipv4.tcp_keepalive_time = 30

 


本文出自 “心静梵音” 博客,请务必保留此出处http://masters.blog.51cto.com/6516495/1597131

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。