http://blog.youkuaiyun.com/kallen_ding/article/details/45815551

1.Nginx配置文件测试
root@kallen:/usr/local/nginx/sbin
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
2.Nginx启动
[root@kallen ~]
3.Nginx负载均衡
Nginx Architecture:

Nginx LoadBalance:

Nginx High Availability:

Nginx Access Process:
Nginx 的 upstream 目前支持4 种方式的分配——
(1)轮询(默认) :
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
(2)weight :
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。
(3)ip_hash :
每个请求按访问ip 的hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session 的问题。可以针对同一个C 类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。
(4)fair(第三方):
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
(5)url_hash(第三方):
按访问url 的hash 结果来分配请求,使每个url 定向到同一个后端服务器,后端服务器为缓存时比较有效。
4.Nginx安装及配置
(1) nginx源码安装
[root@kallen ~]
[root@kallen ~]
[root@kallen ~]
[root@kallen ~]
./configure --prefix=/usr/local/nginx
--sbin-path=/usr/local/nginx/sbin/nginx
--conf-path=/usr/local/nginx/conf/nginx.conf
--error-log-path=/usr/local/nginx/logs/error.log
--http-log-path=/usr/local/nginx/logs/access.log
--pid-path=/usr/local/nginx/var/nginx.pid
--lock-path=/usr/local/nginx/var/nginx.lock
--http-client-body-temp-path=/dev/shm/nginx_temp/client_body
--http-proxy-temp-path=/dev/shm/nginx_temp/proxy
--http-fastcgi-temp-path=/dev/shm/nginx_temp/fastcgi
--user=www --group=www
--with-cpu-opt=pentium4F
--without-select_module
--without-poll_module
--with-http_realip_module
--with-http_sub_module
--with-http_gzip_static_module
--with-http_stub_status_module
--without-http_ssi_module
--without-http_userid_module
--without-http_geo_module
--without-http_memcached_module
--without-http_map_module
--without-mail_pop3_module
--without-mail_imap_module
--without-mail_smtp_module
--with-pcre=/usr/local/src/pcre-8.32/
--with-zlib=/usr/local/zlib
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
[root@kallen ~]
[root@kallen ~]
有的nginx版本编译时会因为pcre编译不过去,需要修改一下
--with-pcre=/usr/local/src/pcre-8.32
,前提是已经下载了pcre源码包pcre-7.8.tar.gz,并解压到/usr/local/src/pcre-8.32
,不需要编译pcre.
在实际安装过程中可能需要手动安装以下依赖包:
a. 安装依赖软件
[ ] - --- ++
b. 下载相关软件
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
wget http://zlib.net/zlib-1.2.8.tar.gz
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
wget http://www.canonware.com/download/jemalloc/jemalloc-3.6.0.tar.bz2
wget http://tengine.taobao.org/download/tengine-2.0.2.tar.gz
c. 安装Pcre
tar zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure --prefix=/usr/local/pcre-8.35
make && make install
d. 安装Zlib
tar zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib-1.2.8
make && make install
[ERROR]-1:
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using
[ERROR]-2:
configure: error: You need a C++ compiler for C++ support.
make[1]: *** [/usr/local/src/pcre-8.32/Makefile] Error 1
make[1]: Leaving directory /home/kallen/MyDOC/nginx-1.8.0
make: *** [build] Error 2
安装完成后的配置信息如下:
[Nginx Configuration Summary]
Configuration summary
+ using PCRE library: /usr/local/src/pcre-8.32
+ OpenSSL library is not used
+ using builtin md5 code
+ sha1 library is not found
+ using zlib library: /usr/local/zlib
nginx path prefix:"/usr/local/nginx"
nginx binary file:"/usr/local/nginx/sbin/nginx"
nginx configuration prefix:"/usr/local/nginx/conf"
nginx configuration file:"/usr/local/nginx/conf/nginx.conf"
nginx pid file:"/usr/local/nginx/var/nginx.pid"
nginx error log file:"/usr/local/nginx/logs/error.log"
nginx http access log file:"/usr/local/nginx/logs/access.log"
nginx http client request body temporary files:"/dev/shm/nginx_temp/client_body"
nginx http proxy temporary files:"/dev/shm/nginx_temp/proxy"
nginx http fastcgi temporary files:"/dev/shm/nginx_temp/fastcgi"
nginx http uwsgi temporary files:"uwsgi_temp"
nginx http scgi temporary files:"scgi_temp"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
(2) 编写nginx启动脚本
[root@kallen init.d]
写入以下内容:
#!/bin/bash
NGINX_PATH="/usr/local/nginx/"
OPTIONS="-c ${NGINX_PATH}conf/nginx.conf"
prog=nginx
nginx=${NGINX_PATH}sbin/nginx
pidfile=/var/run/nginx.pid
. /etc/rc.d/init.d/functions
start() {
echo -n "Starting $prog: "
daemon --pidfile=${pidfile} $nginx $OPTIONS
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n "Stopping $prog: "
killproc -p ${pidfile} $nginx
RETVAL=$?
echo
}
reload() {
echo -n $"Reloading $prog: "
killproc -p ${pidfile} $nginx -HUP
RETVAL=$?
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
status)
status $prog
RETVAL=$?
;;
*)
echo "Usage: $prog {start|stop|restart|reload|status}"
RETVAL=3
esac
exit $RETVAL
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
保存后,更改/etc/init.d/nginx
的权限
[root@kallen ~]
[root@kallen ~]
[root@kallen ~]