nginx介绍以及nginx的反向代理

Posted skyfeng713

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx介绍以及nginx的反向代理相关的知识,希望对你有一定的参考价值。

什么是nginx

  Nginx 是一个高性能的轻量级的HTTP和反向代理服务器,也是一个邮件服务器。

下载地址

  本人使用的是Tengine,它是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。下载地址是:http://tengine.taobao.org/download.html

安装

  首先需要安装依赖,执行命令:

yum install -y gcc pcre-devel openssl-devel zlib-devel

  编译:

make && make install

  默认安装在路径:/usr/local/nginx

添加nginx为linux系统服务(service nginx start/stop/reload)

  1、在/etc/init.d/目录下创建脚本文件,名为nginx

  1 #!/bin/sh 
  2 # 
  3 # nginx - this script starts and stops the nginx daemon 
  4 # 
  5 # chkconfig:   - 85 15 
  6 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \\ 
  7 #               proxy and IMAP/POP3 proxy server 
  8 # processname: nginx 
  9 # config:      /etc/nginx/nginx.conf 
 10 # config:      /etc/sysconfig/nginx 
 11 # pidfile:     /var/run/nginx.pid 
 12 
 13 # Source function library. 
 14 . /etc/rc.d/init.d/functions 
 15 
 16 # Source networking configuration. 
 17 . /etc/sysconfig/network 
 18 
 19 # Check that networking is up. 
 20 [ "$NETWORKING" = "no" ] && exit 0 
 21 
 22 nginx="/usr/local/nginx/sbin/nginx" 
 23 prog=$(basename $nginx) 
 24 
 25 NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" 
 26 
 27 [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx 
 28 
 29 lockfile=/var/lock/subsys/nginx 
 30 
 31 start() { 
 32     [ -x $nginx ] || exit 5 
 33     [ -f $NGINX_CONF_FILE ] || exit 6 
 34     echo -n $"Starting $prog: " 
 35     daemon $nginx -c $NGINX_CONF_FILE 
 36     retval=$? 
 37     echo 
 38     [ $retval -eq 0 ] && touch $lockfile 
 39     return $retval 
 40 } 
 41 
 42 stop() { 
 43     echo -n $"Stopping $prog: " 
 44     killproc $prog -QUIT 
 45     retval=$? 
 46     echo 
 47     [ $retval -eq 0 ] && rm -f $lockfile 
 48     return $retval 
 49 killall -9 nginx 
 50 } 
 51 
 52 restart() { 
 53     configtest || return $? 
 54     stop 
 55     sleep 1 
 56     start 
 57 } 
 58 
 59 reload() { 
 60     configtest || return $? 
 61     echo -n $"Reloading $prog: " 
 62     killproc $nginx -HUP 
 63 RETVAL=$? 
 64     echo 
 65 } 
 66 
 67 force_reload() { 
 68     restart 
 69 } 
 70 
 71 configtest() { 
 72 $nginx -t -c $NGINX_CONF_FILE 
 73 } 
 74 
 75 rh_status() { 
 76     status $prog 
 77 } 
 78 
 79 rh_status_q() { 
 80     rh_status >/dev/null 2>&1 
 81 } 
 82 
 83 case "$1" in 
 84     start) 
 85         rh_status_q && exit 0 
 86     $1 
 87         ;; 
 88     stop) 
 89         rh_status_q || exit 0 
 90         $1 
 91         ;; 
 92     restart|configtest) 
 93         $1 
 94         ;; 
 95     reload) 
 96         rh_status_q || exit 7 
 97         $1 
 98         ;; 
 99     force-reload) 
100         force_reload 
101         ;; 
102     status) 
103         rh_status 
104         ;; 
105     condrestart|try-restart) 
106         rh_status_q || exit 0 
107             ;; 
108     *)    
109       echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" 
110         exit 2 
111 esac  
View Code

  2、修改脚本权限:   chmod 755 /etc/init.d/nginx

  3、添加到系统服务并开机自动启动nginx:   chkconfig nginx on

  4、nginx启动、停止、无间断服务重新加载

[root@hadoop1-1 conf]#  service nginx stop
Stopping nginx: [  OK  ]
[root@hadoop1-1 conf]#  service nginx start
Starting nginx: [  OK  ]
[root@hadoop1-1 conf]#  service nginx reload
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Reloading nginx: [  OK  ]

 nginx反向代理设置

  1、之前讲过Apache httpd的反向代理,关于反向代理的基础在这里不做重复解释,有兴趣可以查看另一篇博客:http://www.cnblogs.com/skyfeng/articles/6628903.html

  2、环境:

    nginx:192.168.2.100

    tomcat1:192.168.2.110

    tomcat2:192.168.2.120

  3、配置配置文件nginx.conf

    #设定负载均衡的应用服务器列表
    #weigth参数表示权值,值越大被分配到的概率越大
    upstream tomcat{
        server 192.168.2.110:8088 weight=2;
        server 192.168.2.120:8088 weight=1;
    }

    server{
        listen       8080;
        server_name  localhost;
        location /tomcat {
           proxy_pass http://tomcat/; #在这里设置一个代理,和upstream的名字一样
           proxy_redirect off; 
           #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
           proxy_set_header Host $host; 
           proxy_set_header X-Real-IP $remote_addr; 
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        }
    }

测试

修改完成之后执行命令:service nginx reload

在浏览器中输入地址:http://192.168.2.100:8080/tomcat

进行刷新,出现如下图页面表示nginx反向代理设置成功!!!

 

以上是关于nginx介绍以及nginx的反向代理的主要内容,如果未能解决你的问题,请参考以下文章

Nginx初体验:nginx介绍

Centos7.4 Nginx反向代理+负载均衡配置

Centos7 nginx 虚拟主机反向代理服务器及负载均衡,多台主机分离php-fpm实验

centos7.4 搭建nginx反向缓存代理

Nginx实现tomcat集群进行负载均衡

使用Nginx实现Tomcat集群负载均衡