Nginx学习笔记

作者:fbysss
msn:jameslastchina@hotmail.com 
blog:blog.csdn.net/fbysss
声明:本文由fbysss整理编写,转载请注明出处
关键字:Nginx

Nginx ,爽呆了!

首先编译pcre:进入解压目录

./configure --prefix=/opt/pcre

make

makeinstall

需要注意的是:默认是有问题的。需要做以下操作

 

mkdir  /usr/local/include/pcre

mkdir /usr/local/include/pcre/.libs

cp /opt/pcre/lib/libpcre.a /usr/local/include/pcre/libpcre.a

cp /opt/pcre/lib/libpcre.a /usr/local/include/pcre/libpcre.la

cp /opt/pcre/include/pcre.h /usr/local/include/pcre/pcre.h

cp  /usr/local/include/pcre/*.* /usr/local/include/pcre/.libs

 

./configure --prefix=/opt/nginx -with-pcre=/usr/local/include/pcre

注意路径后面不要加斜杠。

make的时候,要删掉objs/Makefile里面的一句话

查找./configure --disable-shared 关键字,删除那一行,然后才make

 

配置:

nginx的配置,简直太人性化了,除了集群的配置,其他的我几乎就没有看帮助文档,完全是心想事成,一点bug都没有,简直太顺利了。

虚拟主机:可以配多个,

listen xxx.xxx.xxx [port]

servername [是否需要在/etc/hosts中配置都不一定(不需要),这里也可以是多个,用空格分隔,比如我既可以做图片服务器,也可以做负载均衡服务器,只不过端口号不一样,那么就配置两个虚拟主机,端口侦听不一样。]

比如图片服务器在本机192.168.0.2上,然后有两个tomcat192.168.0.3 192.168.0.4上。

http段中配置

upstream tomcats{

    192.168.0.3:8080

192.168.0.3:8080

}

要注意的一个问题:如果nginx的侦听端口不是80,有时候有问题,转发的时候,没有带上端口号,这可能是一个bug。而配置为80之后就没有任何问题了。

然后在location /中,配置

proxy_pass tomcats  即反向代理,实现分发

 

 

虚拟目录配置:

location /hello{

    alias /usr/local/sss/hello;

}

其他要注意的就是realip配置

 

proxy_set_header        Host $host;

proxy_set_header        X-Real-IP $remote_addr;

proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

nginx+(1n)tomcat集群部署时,后端tomcat需要取得用户的IP,这时通过 request.getRemoteAddr()取得的始终是127.0.0.1.

 

由于用户请求经过nginxngigx转发了请求到tomcat,tomcat取得的始终是nginxIp,如果需要取得真实用户IP,只需要在ngix上做些配置。

 

location / 下设置

  proxy_set_header X-Real-IP $remote_addr;

  proxy_set_header Host $host;

 

 

测试配置:./sbin/nginx -t -c conf/nginx.conf  正确后重启nginx.

 

Java代码修改如下

 

out.println("X-Real-IP : " + request.getHeader("X-Real-IP") + "<br>");

 

其中X-Real-IP即用户真实IP

 

 

 

负载均衡策略

upstream  tomcats{

ip_hash;

server   192.168.0.3:8080;

server   192.168.0.4:8080;

}

 

server {

  location / {

    proxy_pass  http://backend;

  }

}根据客户端IP进行负载均衡,针对同一个C类地址段中的客户端选择到后端同一个源服务器,可避免session引起的问题。

 

还有就是nginx并不提供启停脚本,需要自己编写。

#! /bin/sh

### BEGIN INIT INFO
# Provides:         
nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the
nginx web server
# Description:       starts
nginx using start-stop-daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/
nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/
nginx ] ; then
 . /etc/default/
nginx
fi

set -e

case "$1" in
  start)
 echo -n "Starting $DESC: "
 start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid
  --exec $DAEMON -- $DAEMON_OPTS
 echo "$NAME."
 ;;
  stop)
 echo -n "Stopping $DESC: "
 start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid
  --exec $DAEMON
 echo "$NAME."
 ;;
  test)
 $DAEMON -t -c /etc/
nginx/conf/nginx.conf
 ;;
  restart|force-reload)
 echo -n "Restarting $DESC: "
 start-stop-daemon --stop --quiet --pidfile
  /var/run/$NAME.pid --exec $DAEMON
 sleep 1
 start-stop-daemon --start --quiet --pidfile
  /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
 echo "$NAME."
 ;;
  reload)
      echo -n "Reloading $DESC configuration: "
      start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid
          --exec $DAEMON
      echo "$NAME."
      ;;
  upgrade)
      echo -n "Upgrade $DESC: "
      kill -USR2 `cat /var/run/$NAME.pid`
      sleep 1
      kill -WINCH `cat /var/run/$NAME.pid`
      sleep 1
      kill -9 `cat /var/run/$NAME.pid.oldbin`
      rm /var/run/$NAME.pid.oldbin
      echo "$NAME."
      ;;
  *)
 N=/etc/init.d/$NAME
 echo "Usage: $N {start|stop|test|restart|reload|force-reload|upgrade}" >&2
 exit 1
 ;;
esac

exit 0

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值