Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(一)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://freeloda.blog.51cto.com/2033581/1288553

大纲

一、前言

二、环境准备

三、安装与配置Nginx

四、Nginx之反向代理

五、Nginx之负载均衡

六、Nginx之页面缓存

七、Nginx之URL重写

八、Nginx之读写分离

注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm

一、前言

       在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解、nginx作为web服务器的操作讲解、nginx作为LNMP架构的讲解,不清楚的博友可以回头看看,在这一篇博客中我们主要讲解, nginx的反向代理、负载均衡、缓存、URL重写以及读写分离详解。好了,下面我们来具体说一说。

二、环境准备

1. 操作系统

CentOS 6.4 x86_64

2.软件版本

Nginx 1.4.2

3.实验拓扑

注,实验拓扑见下文。

4.安装yum源

1

2

3

[root@nginx ~]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

[root@web1 ~]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

[root@web2 ~]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm


5.各节点时间同步

1

2

3

[root@nginx ~]# ntpdate 202.120.2.101

[root@web1 ~]# ntpdate 202.120.2.101

[root@web2 ~]# ntpdate 202.120.2.101


6.关闭防火墙与SELinux

1

2

3

4

5

6

7

8

9

10

11

12

[root@nginx ~]# service iptables stop

[root@nginx ~]# chkconfig iptables off 

[root@nginx ~]# getenforce 

Disabled

[root@web1 ~]# service iptables stop

[root@web1 ~]# chkconfig iptables off 

[root@web1 ~]# getenforce 

Disabled

[root@web2 ~]# service iptables stop

[root@web2 ~]# chkconfig iptables off 

[root@web2 ~]# getenforce 

Disabled


三、安装Nginx

1.解压

1

[root@nginx src]# tar xf nginx-1.4.2.tar.gz


2.新建nginx用户与组

1

2

3

4

[root@nginx src]# groupadd -g 108  -r nginx

[root@nginx src]# useradd -u 108 -r -g 108 nginx 

[root@nginx src]# id nginx 

uid=108(nginx) gid=108(nginx) =108(nginx)


3.准备编译配置文件

1

2

[root@nginx src]# yum install -y pcre-devel openssl-devel

[root@nginx nginx-1.4.2]# ./configure   --prefix=/usr   --sbin-path=/usr/sbin/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_flv_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


4.编译并安装

1

[root@nginx nginx-1.4.2]# make && make install


5.为nginx提供SysV init脚本

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

[root@nginx ~]# cat /etc/init.d/nginx

#!/bin/sh 

# nginx - this script starts and stops the nginx daemon 

# chkconfig:   - 85 15 

# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \ 

#               proxy and IMAP/POP3 proxy server 

# processname: nginx 

# config:      /etc/nginx/nginx.conf 

# config:      /etc/sysconfig/nginx 

# pidfile:     /var/run/nginx.pid 

# Source function library. 

. /etc/rc.d/init.d/functions 

# Source networking configuration. 

. /etc/sysconfig/network 

# Check that networking is up. 

[ "$NETWORKING" = "no" ] && exit 0 

nginx="/usr/sbin/nginx" 

prog=$(basename $nginx) 

NGINX_CONF_FILE="/etc/nginx/nginx.conf" 

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx 

lockfile=/var/lock/subsys/nginx 

make_dirs() { 

   # make required directories 

   user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` 

   options=`$nginx -V 2>&1 | grep 'configure arguments:'` 

   for opt in $options; do 

       if [ `echo $opt | grep '.*-temp-path'` ]; then 

           value=`echo $opt | cut -d "=" -f 2` 

           if [ ! -d "$value" ]; then 

               # echo "creating" $value 

               mkdir -p $value && chown -R $user $value 

           fi 

       fi 

   done 

start() { 

    [ -x $nginx ] || exit 5 

    [ -f $NGINX_CONF_FILE ] || exit 6 

    make_dirs 

    echo -n $"Starting $prog: " 

    daemon $nginx -c $NGINX_CONF_FILE 

    retval=$? 

    echo 

    [ $retval -eq 0 ] && touch $lockfile 

    return $retval 

stop() { 

    echo -n $"Stopping $prog: " 

    killproc $prog -QUIT 

    retval=$? 

    echo 

    [ $retval -eq 0 ] && rm -f $lockfile 

    return $retval 

restart() { 

    configtest || return $? 

    stop 

    sleep 1 

    start 

reload() { 

    configtest || return $? 

    echo -n $"Reloading $prog: " 

    killproc $nginx -HUP 

    RETVAL=$? 

    echo 

force_reload() { 

    restart 

configtest() { 

  $nginx -t -c $NGINX_CONF_FILE 

rh_status() { 

    status $prog 

rh_status_q() { 

    rh_status >/dev/null 2>&1 

case "$1" in 

    start) 

        rh_status_q && exit 0 

        $1 

        ;; 

    stop) 

        rh_status_q || exit 0 

        $1 

        ;; 

    restart|configtest) 

        $1 

        ;; 

    reload) 

        rh_status_q || exit 7 

        $1 

        ;; 

    force-reload) 

        force_reload 

        ;; 

    status) 

        rh_status 

        ;; 

    condrestart|try-restart) 

        rh_status_q || exit 0 

            ;; 

    *) 

        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" 

        exit 2 

esac

6.为此脚本赋予执行权限

1

[root@nginx ~]# chmod +x /etc/init.d/nginx


7.添加至服务管理列表,并让其开机自动启动

1

2

3

4

[root@nginx ~]# chkconfig --add nginx

[root@nginx ~]# chkconfig nginx on 

[root@nginx ~]# chkconfig nginx --list 

nginx              0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭


8.启动nginx

1

2

[root@nginx ~]# service nginx start

正在启动 nginx:                                           [确定]


9.查看一下端口

1

2

[root@nginx ~]# netstat -ntlp | grep :80

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      3889/nginx


10.测试一下

wKioL1Ry6uTjUFIhAAFQw7ZLaqU157.jpg

好了,Nginx安装与配置就到这里,下面我们来说一说Nginx的反向代理。



你可能感兴趣的:(nginx安装)