热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nginx+tomcatLVS群集

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

 

 

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

LVS群集   nginx+tomcat

项目拓扑图:

 

一.安装nginx + tomcat           

 

192.168.1.248和192.168.1.249服务器上如下配置:

 

1.  JDK的安装

将下载好的安装程序放到/soft目录下

cd /soft

chmod a+x jdk-6u23-linux-i586.bin

./jdk-6u23-linux-i586.bin

mkdir -p /data/conf

mv jdk1.6.0_23/ /data/conf/jdk

 

删除系统中旧的版本

rm -rf /usr/bin/java

rm -rf /usr/bin/javac

 

创建链接,设置新的版本

ln -s /data/conf/jdk/bin/java /usr/bin/java

ln -s /data/conf/jdk/bin/javac /usr/bin/javac

 

查看新的版本信息

java -version

javac -version

查看jdk版本是否是1.6.到此JDK已经安装完成

 

 

 

2. Tomcat安装

解压压缩文件

cd /soft

tar xzvf apache-tomcat-6.0.32.tar.gz

mv apache-tomcat-6.0.32 /data/conf/tomcat

cd /data/conf/tomcat/bin/ 

 

  

添加用户

useradd webuser -s /sbin/nologin

chown -R webuser:webuser /data/

  

tomcat优化选项

 

 (1)添加tomcat管理员

 

# vi /usr/local/www/tomcat/conf/tomcat-users.xml

 在  中间添加

 

 

 其中username="tomcat"为用户名password="li147258369"为密码

 

 (2)修改JVM

JAVA_OPTS="-Xms1024m -Xmx1024m -Xmn256m -Djava.awt.headless=true"

 

 (3)server.xml 参数修改

 

            maxHttpHeaderSize="8192" useBodyEncodingForURI="true" 

            maxThreads="600"      最大连接数 

            redirectPort="8443" 

            enableLookups="false"  禁用DNS查询

            compression="on"  

            compressionMinSize="2048"    压缩,压缩大小

compressableMimeType="text/html,text/xml,text/Javascript,text/css,text/plain"  

            connectionTimeout="20000" 

            disableUploadTimeout="true" 

       />

 

 

 

设置环境目录 

vi /etc/profile

 

TOMCAT_HOME=/data/conf/tomcat

JAVA_HOME=/data/conf/jdk

JRE_HOME=/data/conf/jdk/jre

export JAVA_HOME JRE_HOME  TOMCAT_HOME

 

 

备份tomcat配置文件

cd /data/conf/tomcat/conf

mv server.xml server.xml.bak

 

设置tomcat配置文件,配置虚拟主机

vi server.xml

 

在后面添加



                       
               


                       
               


                       
               

 

 启动tomcat

/data/conf/tomcat/bin/startup.sh

 

查看启动进程

ps -ef |grep tomcat

 

 

访问tomcat测试页,出现猫头网页,则安装成功!

links http://localhost:8080

 

 

3. 安装nginx

解压压缩文件

tar zxvf pcre-8.02.tar.gz

cd pcre-8.02/

 

编译安装

./configure

make && make install

tar zxvf nginx-0.8.50.tar.gz

 

cd nginx-0.8.50/

 

编译安装

./configure --prefix=/data/conf/nginx --with-http_stub_status_module

make && make install

 

 

配置nginx配置文件

cd /data/conf/nginx

 

备份nginx.conf配置文件

mv nginx.conf nginx.conf.bak

 

 

vi nginx.conf 

 

user nobody nobody;

worker_processes 4;

pid /data/conf/nginx/logs/nginx.pid;

worker_rlimit_nofile 51200;

events

{

use epoll;

worker_connections 51200;

}

http{

include       mime.types;

default_type application/octet-stream;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 8m;

sendfile on;

tcp_nopush     on;

keepalive_timeout 60;

tcp_nodelay on;

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

gzip on;

gzip_min_length 1k;

gzip_buffers     4 16k;

gzip_http_version 1.0;

gzip_comp_level 2;

gzip_types       text/plain application/x-Javascript text/css application/xml;

gzip_vary on;

  

upstream www

{

server 192.168.1.248:8080;

server 192.168.1.249:8080;

}

server {

listen 80;

server_name www.benet.com;

location / {

root /data/web/www.benet.com ;

index index.jsp index.htm index.html;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://www;

}

access_log /data/logs/benet.com/www.benet.access.log;
error_log /data/logs/benet.com/error-www.benet.com;
}

 

server {
listen 80;
server_name www.accp.com;
location / {
root /var/www ;
index index.jsp index.htm index.html;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://www;
}
access_log /data/logs/accp.com/www.accp.access.log;
error_log /data/logs/accp.com/error-www.accp.com;
}

 

server {
listen 80;
server_name www.apache.com;
location / {
root /data/web/www.apache.com ;
index index.jsp index.htm index.html;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://www;
}
access_log /data/logs/apache.com/www.apache.access.log;
error_log /data/logs/apache.com/error-www.apache.com;
}

}

 

 

检测配置文件是否存在错误

./nginx -t

 

启动nginx

 

 

 

创建项目目录

mkdir /data/web/www.benet.com

mkdir /data/web/www.accp.com

mkdir /data/web/www.apache.com

mkdir -p /data/logs/benet.com

mkdir -p /data/logs/accp.com

mkdir -p /data/logs/apache.com

 

建立测试网页

echo "This is benet home page !!!" > /data/web/www.benet.com/index.html

echo "This is accp home page !!! " > /data/web/www.accp.com/index.html

echo "This is apache home page !!!" > /data/web/www.apache.com/index.html

 

添加hosts记录

echo "192.168.1.248 www.benet.com" >> /etc/hosts

echo "192.168.1.248 www.accp.com" >> /etc/hosts

echo "192.168.1.248 www.apache.com" >> /etc/hosts

 

浏览测试网页,出现相应的网页,则配置完成。

links http://www.benet.com

links http://www.accp.com

links http://www.apache.com

 

 

 

 

 

 

                                                                            2011年04月07日修改完成

 

 

 

4.  sersync 同步配置,使得网站项目文件一致。

 

在192.168.1.248服务器上安装rsync

tar xzvf rsync-3.0.7.tar.gz

cd rsync-3.0.7

./configure --prefix=/data/conf/rsync

make && make install

rpm -qa |grep rsync

rpm -qf /usr/bin/rsync

rpm -e rsync-2.6.8-3.1

ln -s /data/conf/rsync/bin/rsync /usr/bin/rsync

 

查看rsync版本

rsync -version

 

 

配置rsync配置文件

vi rsyncd.conf

port = 873

max connections = 4

pid file = /data/conf/rsync/rsync.pid

lock file = /data/conf/rsync/rsync.lock

log file = /data/conf/rsync/rsync.log

[dataweb]

path = /data/web

auth users = aa

secrets file = /data/conf/rsync/conf/rsync.passwd

uid = webuser

gid = webuser

read only = no

 

创建认证用户名和密码文件 

vi /data/conf/rsync/conf/rsync.passwd

aa:123456

 

启动rsync守护进程

rsync --daemon

 

 

 

 

 

 

 

配置sersync配置文件

vi confxml.xml

 

修改为

           

           

           

       

        

           

           

           

           

           

 

 

开启sersync守护进程

./sersync2 -d

 

测试文件是否同步

在192.168.1.249服务器上/data/web/目录下创建些文件

在192.168.1.248服务器上/data/web/目录下看是否同步有相应的文件

 

 

 

 

 

 

LVS群集配置

 

1.客户端 就是真实服务器

 

在192.168.1.248和249服务器环回接口上绑定 虚拟ip

 

vi /data/conf/realserver 

#!/bin/bash

#description : start realserver

VIP=192.168.1.100

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

case "$1" in

start)

echo " start LVS of REALServer"

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

;;

stop)

/sbin/ifconfig lo:0 down

echo "close LVS Directorserver"

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

 

 

开启虚拟IP

cd /data/conf

./realserve start

 

查看虚拟IP

ip add  或者 ifconfig

 

 

192.168.1.246 lvs主机------------192.168.1.247 lvs备份机

  

1. 在1.246和247上安装 ipvsadm

yum -y install ipvsadm

 

 

2.             192.168.1.246 lvs主机安装keepalived

 

安装keepalived

cd /soft

tar xzvf keepalived-1.1.19_.tar.gz

./configure --prefix=/data/conf/keepalived

make

make install

 

创建keepalived目录

mkdir -p /etc/keepalived

 

创建keepalived.conf配置文件

  ! Configuration File for keepalived
global_defs {
    notification_email {
          543302969@qq.com
    }
    notification_email_from 543302969@qq.com
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}
# 20081013 written by :netseek
# VIP1
vrrp_instance VI_1 {
     state MASTER             #备份服务器上将MASTER改为BACKUP  
     interface eth0
     virtual_router_id 51
     priority 100   # 备份服务上将100改为99
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         192.168.1.100           #(如果有多个VIP,继续换行填写.)
     }
}
virtual_server 192.168.1.100 80 {
     delay_loop 6                  #(每隔10秒查询realserver状态)
     lb_algo wrr                  #(lvs 算法)
     lb_kind DR                  #(Direct Route)
     persistence_timeout 60        #(同一IP的连接60秒内被分配到同一台realserver)
     inhibit_on_failure            #当web挂掉的时候,前面请求的用户,可以继续打开页面,但是后面的请求不会调度到挂掉的web上面。
     protocol TCP                #(用TCP协议检查realserver状态)
    

     real_server 192.168.1.248 80 {
         weight 3               #(权重)
         TCP_CHECK {
         connect_timeout 10       #(10秒无响应超时)
         nb_get_retry 3
         delay_before_retry 3
         }
     }
     real_server 192.168.1.249 80 {
         weight 1
         TCP_CHECK {
         connect_timeout 10
         nb_get_retry 3
         delay_before_retry 3
         }
      }

启动keepalived

cd /data/conf/keepalived/sbin

./keepalived -D

 

查看keepalived进程,是否有3个进程

ps -ef |grep keepalived

 

 

查看ipvsadm

ipvsadm -L -c

 

 

LVS群集测试:

 

设置hosts文件

192.168.1.100  www.benet.com

192.168.1.100 www.accp.com

192.168.1.100 www.apache.com

 

访问测试网页

http://www.benet.com

 

关闭LVS master主机,看是否还能访问测试网页不,如果能访问,则LVS配置成功了,若不行,则进行相应的排错啦.

 

本文出自 “fallenleaves” 博客,请务必保留此出处http://fallenleaves.blog.51cto.com/1383716/530901

 

 

 

 

Apache,tomcat,nginx,apache+tomcat,nginx+tomcat自动化安装脚本

 

#!/bin/bash

#Auto Install Apache Tomcat Nginx apache+tomcat nginx+tomcat.

#apache version: 2.2.17       download: http://httpd.apache.org/download.cgi#apache22

#jdk    version: 1.6          download: http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

#tomcat version: 6.0.23       download: http://tomcat.apache.org/download-60.cgi

#nginx  version: 0.8.54       download: http://nginx.org/en/download.html
 
#执行这个自动化安装脚本需要把apache tomcat jdk nginx的安装包拷贝到/soft目录下.

#apache安装在/opt/conf/apache目录下. nginx安装在/opt/conf/nginx目录下.

#tomcat安装在/opt/conf/tomcat目录下. jdk安装在/opt/conf/jdk目录下.

# 20110413 write: liweizhong   e-mail:lwz_benet@163.com  QQ:543302969  Version 1.1


IN_SRC=/soft
IN_DIR=/opt/conf

echo "=================Check software development environment.================" 
echo ""
rpm -q  gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel > /dev/null

if  [ "$?" != 0 ] ;
then
echo "Please check your need software"
exit 0
else
echo "software is OK !! "
fi

if [[ ! -d $IN_DIR ]]
  then
  mkdir -p $IN_DIR
fi


function apache_ins {
echo ""
echo "===========================Apache installing============================="
sleep 5
#Auto apache


echo "installing httpd..."

        cd $IN_SRC

        tar jxvf httpd-2.2.17.tar.bz2

        cd httpd-2.2.17

        ./configure --prefix=$IN_DIR/apache --with-mpm=worker --enable-rewrite --enable-deflate --disable-userdir --enable-so

        [ $? != 0 ] && exit

        make

        [ $? != 0 ] && exit

        make install

        [ $? != 0 ] && exit

        echo "Include conf/vhost.conf" >> $IN_DIR/apache/conf/httpd.conf

        sed -i "s/#ServerName/ServerName localhost/g" $IN_DIR/apache/conf/httpd.conf
touch $IN_DIR/apache/conf/vhost.conf
$IN_DIR/apache/bin/apachectl start
echo "$IN_DIR/apache/bin/apachectl start" >> /etc/rc.local
${SERVICES}_ins
sleep 2
echo "==========================Auto Install  finished=========================="
}

 


function tomcat_ins {
echo ""
echo "===========================Tomcat installing============================="
sleep 5
#Auto Install JDK

cd /soft
chmod 700 jdk*
./jdk-6u23-linux-i586.bin
mv jdk1.6.0_23/ /opt/conf/jdk
rm -rf /usr/bin/java
rm -rf /usr/bin/javac
ln -s /opt/conf/jdk/bin/java /usr/bin/java
ln -s /opt/conf/jdk/bin/javac /usr/bin/javac
java -version

sleep 3
javac -version
echo ""
echo ""
echo "====================Auto Install JDK Have finished======================"

#Auto Install tomcat

sleep 5
cd /soft
tar xzvf apache-tomcat-6.0.32.tar.gz
mv apache-tomcat-6.0.32 /opt/conf/tomcat

cat >> /etc/profile <

TOMCAT_HOME&#61;/opt/conf/tomcat

JAVA_HOME&#61;/opt/conf/jdk
   
JRE_HOME&#61;/opt/conf/jdk/jre
   
PATH&#61;$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$TOMCAT_HOME/bin/

export JAVA_HOME JRE_HOME  PATH TOMCAT_HOME

EFF
source /etc/profile

sleep 3
cd /opt/conf/tomcat/bin
./startup.sh
echo ""
echo ""
echo "&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;Already all installation is complete&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"
}


function nginx_ins {
echo ""
echo "&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;Nginx installing&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"
sleep 5
#Auto nginx

echo "installing nginx..."

        cd $IN_SRC

        tar zxvf nginx-0.8.54.tar.gz

        cd nginx-0.8.54

        make_clean

        useradd www

        ./configure --user&#61;www --group&#61;www  --prefix&#61;$IN_DIR/nginx --without-http_rewrite_module --with-http_stub_status_module --with-http_ssl_module 

        [ $? !&#61; 0 ] && exit

        make

        [ $? !&#61; 0 ] && exit

        make install

        [ $? !&#61; 0 ] && exit

       
/opt/conf/nginx/sbin/nginx
echo "$IN_DIR/nginx/sbin/nginx " >> /etc/rc.local
${SERVICES}_ins
sleep 3
echo "&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;Auto Install finished&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"
}


echo "Slect install
      1. apache
      2. tomcat&#43;jdk
      3. nginx
      4. apache&#43;tomcat
      5. nginx&#43;tomcat
      6. don&#39;t install is now
"

read -p "Please Input 1,2,3,4,5,6:" SERVER_ID
if [[ $SERVER_ID &#61;&#61; 5 ]]; then
   SERVICE&#61;"nginx"
   SERVICES&#61;"tomcat"
elif [[ $SERVER_ID &#61;&#61; 4 ]]; then
   SERVICE&#61;"apache"
   SERVICES&#61;"tomcat"
elif [[ $SERVER_ID &#61;&#61; 3 ]]; then
   SERVICE&#61;"nginx"
elif [[ $SERVER_ID &#61;&#61; 2 ]]; then
   SERVICE&#61;"tomcat"
elif [[ $SERVER_ID &#61;&#61; 1 ]]; then
   SERVICE&#61;"apache"
else
echo ""
echo "Thanks bye!!"
exit
fi

${SERVICE}_ins


 

本文出自 “fallenleaves” 博客&#xff0c;请务必保留此出处http://fallenleaves.blog.51cto.com/1383716/545832

 

 

 

 

自动安装多个tomcat shell脚本

 

 

 

自动安装多个tomcat shell脚本

#!/bin/bash
#Auto Install JDK、tomcat and they connector.

#执行这个脚本需要在/soft目录下放好JDK、tomcat、的tar.gz源码包&#xff0c;

#以及已经执行过的jdk&#xff08;本人无法做到在jdk执行时输入Enter和空格&#xff0c;所以这一步骤需要手动做。)

#tomcat安装到/data/conf/tomcat&#xff0c;已设置环境变量。

#JDv安装>/data/conf/jdk&#xff0c;已设置环境变量。

# 20110401 lwz_benet&#64;163.com  Version 1.0 write:fallenleaves QQ:543302969


echo "&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;Began installing&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"

if [ ! -d /opt/conf ]
then
mkdir -p /opt/conf
else
echo "This directory is already exists"
fi

#Auto Install JDK

cd /soft
chmod 700 jdk*
./jdk-6u24-linux-i586.bin
mv jdk1.6.0_24/ /opt/conf/jdk
rm -rf /usr/bin/java
rm -rf /usr/bin/javac
ln -s /opt/conf/jdk/bin/java /usr/bin/java
ln -s /opt/conf/jdk/bin/javac /usr/bin/javac
java -version

sleep 5
javac -version
echo ""
echo ""
echo "&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;Auto Install JDK Have finished&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"

#Auto Install tomcat
for i in &#96;seq 1 3&#96;
do
mkdir -p /opt/conf/tomcat$i
cd /soft
tar xzvf apache-tomcat-7.0.12.tar.gz
mv apache-tomcat-7.0.12/*  /opt/conf/tomcat$i

cat >> /etc/profile <

TOMCAT$i&#61;/opt/conf/tomcat$i

EFF

done


cat >> /etc/profile <

JAVA_HOME&#61;/opt/conf/jdk
   
JRE_HOME&#61;/opt/conf/jdk/jre
   
PATH&#61;$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$TOMCAT1/bin:$TOMCAT2/bin:$TOMCAT3/bin/

export JAVA_HOME JRE_HOME  PATH TOMCAT1 TOMCAT2 TOMCAT3

FFG

source /etc/profile


 

本文出自 “fallenleaves” 博客&#xff0c;请务必保留此出处http://fallenleaves.blog.51cto.com/1383716/547974

 

 

 

 

 

 

nginx&#43;tomcat负载均衡缓存服务器集群

 

 

根据公司的需求&#xff0c;以及以后的访问量&#xff0c;决定用nginx做负载均衡服务器和cache缓存服务器&#xff0c;后端用2台tomcat提供web服务&#xff0c;用户信息数据用oracle来存储&#xff0c;音频文件用一台单独的应用服务器来存储。下面是nginx和tomcat的配置信息&#xff0c;关于oracle的安装和配置请参考本博客的centos&#43;oracle10g的安装文件说明来配置。


1、环境描述


nginx和tomcat1服务器地址&#xff1a;192.168.81.131

tomcat2服务器地址&#xff1a;192.168.81.128

tomcat3服务器地址&#xff1a;192.168.81.132



2、


Nginx从0.7.48版本开始&#xff0c;支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key&#xff0c;用md5编码哈希后保存在硬盘上&#xff0c;所以它可以支持任意URL链接&#xff0c;同时也支持404/301/302这样的非200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间&#xff0c;不支持类似Squid的PURGE指令&#xff0c;手动清除指定缓存页面&#xff0c;但是&#xff0c;通过一个第三方的Nginx模块&#xff0c;可以清除指定URL的缓存。

 

  Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成&#xff0c;前者用于反向代理时&#xff0c;对后端内容源服务器进行缓存&#xff0c;后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。

  最新的Nginx 0.8.32版本&#xff0c;proxy_cache和fastcgi_cache已经比较完善&#xff0c;加上第三方的ngx_cache_purge模块&#xff08;用于清除指定URL的缓存&#xff09;&#xff0c;已经可以完全取代Squid。我们已经在生产环境使用了 Nginx 的 proxy_cache 缓存功能超过两个月&#xff0c;十分稳定&#xff0c;速度不逊于 Squid。

  在功能上&#xff0c;Nginx已经具备Squid所拥有的Web缓存加速功能、清除指定URL缓存的功能。而在性能上&#xff0c;Nginx对多核CPU的利用&#xff0c;胜过Squid不少。另外&#xff0c;在反向代理、负载均衡、健康检查、后端服务器故障转移、Rewrite重写、易用性上&#xff0c;Nginx也比Squid强大得多。这使得一台Nginx可以同时作为“负载均衡服务器”与“Web缓存服务器”来使用。


<如果想多了解nginx的文件可以参考张宴的博客&#xff1a;http://blog.s135.com/nginx_cache/&#xff0c;或是nginx中文网站&#xff1a;http://www.nginxcn.com/doc/toc.html &#xff0c;本文部分选自张宴博客的文章>


(1)、Nginx 负载均衡与缓存服务器在 Linux 下的编译安装&#xff1a;


ulimit -SHn 65535

echo “ulimit -SHn 65535″ >>/etc/rc.local ##使下次重启配置生效
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz
tar zxvf pcre-8.00.tar.gz
cd pcre-8.00/
./configure
make && make install
cd ../

wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz
tar zxvf ngx_cache_purge-1.0.tar.gz

wget http://nginx.org/download/nginx-0.8.32.tar.gz
tar zxvf nginx-0.8.32.tar.gz
cd nginx-0.8.32/
./configure –user&#61;www –group&#61;www –add-module&#61;../ngx_cache_purge-1.0 –prefix&#61;/usr/local/webserver/nginx –with-http_stub_status_module –with-http_ssl_module
make && make install
cd ../


(2)、nginx完整的配置文件如下&#xff1a;


user  www www;

worker_processes 10;

error_log  /usr/local/webserver/nginx/logs/nginx_error.log  crit;

pid        /usr/local/webserver/nginx/nginx.pid;

#最大文件描述符
worker_rlimit_nofile 51200;

events
{
      use epoll;

worker_connections 51200;
}

http
{
      include       mime.types;
      default_type  application/octet-stream;

keepalive_timeout 60;

tcp_nodelay on;
      sendfile on;

server_names_hash_bucket_size 128;
      client_header_buffer_size 32k;
      large_client_header_buffers 4 32k;
      client_max_body_size 300m;

gzip on;
      gzip_min_length  1k;
      gzip_buffers     4 16k;
      gzip_http_version 1.1;
      gzip_comp_level 2;
      gzip_types       text/plain application/x-Javascript text/css application/xml;
      gzip_vary on;

proxy_connect_timeout    5;
      proxy_read_timeout       60;
      proxy_send_timeout       5;
      proxy_buffer_size        16k;
      proxy_buffers            4 64k;
      proxy_busy_buffers_size 128k;
      proxy_temp_file_write_size 128k;

upstream tomcat
      {
      server  192.168.81.131:8080;
      server  192.168.81.128:8080;

server  192.168.81.132:8080;
      }
     
      #注&#xff1a;proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
      proxy_temp_path /data0/proxy_temp_dir;
      #设置Web缓存区名称为cache_one&#xff0c;内存缓存空间大小为50MB&#xff0c;1天没有被访问的内容自动清除&#xff0c;硬盘缓存空间大小为10GB。
      proxy_cache_path /data0/proxy_cache_dir levels&#61;1:2 keys_zone&#61;cache_one:50m inactive&#61;1d max_size&#61;10g;

server
       {
        listen       80;
        server_name  tomcat.hxqm.com;
        root  /data0/htdocs/tomcat;
        index index.html index.htm index.jsp default.jsp index.do default.do;

if (-d $request_filename)
 {
 rewrite ^/(.*)([^/])$ http://$host/$1$2/ last;
 }   

location /
 {

#如果后端的服务器返回502、504、执行超时等错误&#xff0c;自动将请求转发到upstream负载均衡池中的另一台服务器&#xff0c;实现故障转移。
 proxy_next_upstream http_502 http_504 error timeout invalid_header;
 proxy_cache cache_one;

#对不同的HTTP状态码设置不同的缓存时间
 proxy_cache_valid 200 304 12h;

#以域名、URI、参数组合成Web缓存的Key值&#xff0c;Nginx根据Key值哈希&#xff0c;存储缓存内容到二级缓存目录内
 proxy_cache_key $host$uri$is_args$args;
 proxy_set_header Host  $host;
 proxy_set_header X-Forwarded-For  $remote_addr;
 proxy_pass http://tomcat;
     expires      1d;   
     } 
 #用于清除缓存&#xff0c;假设一个URL为http://tomcat.hxqm.com/docs/appdev/index.html&#xff0c;通过访问http://tomcat.hxqm.com/purge/docs/appdev/index.html就可以清除该URL的缓存。
 location ~ /purge(/.*)
 {
 allow 127.0.0.1;
 allow 192.168.81.0/24;
 deny  all;
 proxy_cache_purge cache_one $host$1$is_args$args;
 }
 

#扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。
 location ~ .*\.(php|jsp|cgi)?$
 {
 proxy_set_header Host $host;
 proxy_set_header X-Forwarded-For $remote_addr;
 proxy_pass http://tomcat;
 }

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
 {
 expires      30d;
 }

location ~ .*\.(js|css)?$
 {
 expires      1h;
 }  

log_format  tomcatlogs  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
  ’$status $body_bytes_sent “$http_referer” ‘
  ’”$http_user_agent” $http_x_forwarded_for’;
 access_log  /data1/logs/tomcatlogs.log  tomcatlogs;
 
       }

}


(3)、启动nginx服务&#xff0c;先测试nginx配置文件是否正确,用

/usr/local/webserver/nginx/sbin/nginx -t 测试

如果提示如下就说明配置文件没有问题可以启动nginx服务器了&#xff1a;

[root&#64;hxqm-tomcat local]# /usr/local/webserver/nginx/sbin/nginx -t
the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful

如果启动报错&#xff0c;你可以根据报错其实的行数来查看你的配置文件


3、tomcat的配置

把jdk文件和tomcat文件放在/usr/local/src目录下(各位习惯&#xff0c;可以自己定义)


(1)、安装jdk(本人装的jdk用的是jdk-6u17-linux-i586.bin)

cd /usr/local/src;chmod&#43;x jdk-6u17-linux-i586.bin;./jdk-6u17-linux-i586.bin

在安装过程中敲几下空格&#xff0c;然后输入”yes”&#xff0c;然后中途中再按回车jdk就装好了。

做软连接&#xff1a;

ln -s /usr/local/jdk1.6.0_17/ /usr/local/jdk


(2)、java环境变量的配置

vi /etc/profile&#xff0c;把以下内容写到文件的尾部


JAVA_HOME&#61;”/usr/local/jdk”
         CLASS_PATH&#61;”$JAVA_HOME/lib:$JAVA_HOME/jre/lib”
         PATH&#61;”.:$PATH:$JAVA_HOME/bin”
         CATALINA_HOME&#61;”/usr/local/tomcat”
         export JAVA_HOME CATALINA_HOME


然后保存退出&#xff0c;执行 source /etc/profile 使刚才配置的环境变量生效或者也可以重启机器&#xff0c;自己选择适合自己的方式。


(3)、tomcat的配置


编辑tomcat的配置文件server.xml

在Hosts文件里面加上如下字段&#xff1a;



解释&#xff1a;tomcat默认回去”appBase”目录去查找要访问的文件&#xff0c;如果没有找到就去”docBase”目录去寻找。这个这段也可以不加&#xff0c;自己随意。


这是一台tomcat服务器的配置信息&#xff0c;其他两台一样&#xff0c;此处就不多说了。


(4)、启动tomcat服务


/usr/local/tomcat/bin/startup.sh


4、在本地的hosts文件里添加一条记录&#xff1a;


192.168.81.131 tomcat.hxqm.com


5、测试访问http://tomcat.hxqm.com,如果页面可以正常访问&#xff0c;说明nginx的代理和tomcat的服务都没有问题。


6、清除指定的URL缓存测试示例&#xff1a;



 

 

 

 

关键字: nginx&#43;tomcat集群负载均衡

Nginx&#43;tomcat 做负载均衡

架构描述

前端一台nginx服务器做负载均衡器&#xff0c;后端放N台tomcat组成集群处理服务&#xff0c;通过nginx转发到后面&#xff08;注&#xff1a;没做动静分离&#xff0c;静态动态全部都转给tomcat&#xff09;

优点&#xff1a;实现了可弹性化的架构&#xff0c;在压力增大的时候可以临时添加tomcat服务器添加到这个架构里面去

一&#xff0c;配置nginx

1&#xff0c;  下载包

Wget http://sysoev.ru/nginx/nginx-0.6.32.tar.gz

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

2,  安装nginx包

a.安装pcre

tar zxvf pcre-7.2.tar.gz

cd pcre

 ./configure  --prefix &#61; /pcre

 Make;make install

b,安装nginx

tar zxvf nginx-0.6.32.tar.gz

cd nginx-0.6.32

./configure  --prefix&#61;/nginx –with-pcre&#61;/pcre  --with-http_rewrite_module

Make;make install

3, 修改配置文件

Vi /nginx/conf/nginx.conf


#用户组

user nobody nobody;                 

#cpu个数&#xff0c;可以按照实际服务器来计算

worker_processes  8;                

worker_rlimit_nofile 51200;         

events {

use epoll;

#连接数

worker_connections  8192 ;      

}

http {

include       mime.types;

default_type  application/octet-stream;

server_names_hash_bucket_size 128;

#    access_log  off;

#    access_log  logs/access.log;

#缓存的时间&#xff0c;&#xff08;可以根据不同文件设置不同时间&#xff09;

#   expires           2h;      

tcp_nodelay on;

keepalive_timeout  30;      

gzip  on;

gzip_min_length  10;

gzip_buffers     4 8k;

gzip_http_version 1.1;

gzip_types       text/plain application/x-Javascript text/css text/html application/xml;

sendfile         on;

tcp_nopush       on;

reset_timedout_connection  on;

client_max_body_size 30m; 

#设定负载均衡列表       

upstream  backend           

{                      

server   172.23.254.2:8080;   

server   172.23.254.3:8080;

}


#设定虚拟主机

server {

listen       80;

server_name  www.abc.com;

#对 / 所有做负载均衡 &#xff08;本机nginx采用完全转发&#xff0c;所有请求都转发到后端的tomcat集群&#xff09;

location / {       

root /web/www ;

index index.jsp index.htm index.html;

proxy_redirect         off;

#保留用户真实信息

proxy_set_header       Host $host;

proxy_set_header  X-Real-IP  $remote_addr;

proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass  http://backend;   

}

}

}

主要在配置proxy与upstream

Upstream具有负载均衡能力&#xff0c;可以自动判断下面的机器&#xff0c;并且自动踢出不能正常提供服务的机器。



4&#xff0c;启动程序

/nginx/sbin/nginx

5,编写启动脚本

Vi nginx.sh

#!/bin/sh

CWD&#61;&#96;pwd&#96;


case $1 in
        start)
                /nginx/sbin/nginx;
                        ;;
        stop)
                kill -2 &#96;ps -ef|grep "/nginx/sbin/nginx"|grep -v "grep"|awk &#39;{print $2}&#39; &#96;
                        ;;
        restart)
                cd "$CMD"
                $0 stop
                $0 start
        ;;
        *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac
exit 0


二&#xff0c;配置tomcat

1&#xff0c;  下载tomcat5.59

tar zxvf tomcat5.59

2,修改配置文件

a,配置数据源

b&#xff0c;优化tomcat最大并发数


maxThreads&#61;"2048" minSpareThreads&#61;"100" maxSpareThreads&#61;"200"

enableLookups&#61;"false" redirectPort&#61;"8443" acceptCount&#61;"500"

connectionTimeout&#61;"20000" disableUploadTimeout&#61;"true" />

c&#xff0c;添加虚拟主机

&#xff08;注&#xff0c;主转发的虚拟主机必须用localhost&#xff0c;否则nginx不能通过内网ip转发&#xff0c;而只有通过域名转发

d,测试

打开http://ip:8080

页面能访问则正常

2&#xff0c;  其他的tomcat服务器也用同样的配置

三&#xff0c;做tomcat集群

两台机器 172.23.254.2  172.23.254.3

做集群需要修改的文件配置有三个地方

1&#xff0c;修改conf/server.xml配置文件
        a. 找到Engine标签&#xff0c;加入属性 jvmRoute&#61;"worker1"

b.找到Cluster标签&#xff0c;去掉注释&#xff0c;同时修改tcpListenAddress为本机ip 172.23.254.2 &#xff08;注&#xff1a;这一段Cluster必须放在hosts里面&#xff09;


2&#xff0c;  修改应用的web.xml

修改web应用里面WEB-INF目录下的web.xml文件&#xff0c;加入标签



直接加在之前就可以了

这个是加入tomcat的session复制的&#xff0c;做tomcat集群必须需要这一步&#xff0c;否则用户的session就无法正常使用。

3&#xff0c;  开启防火墙

这两个tomcat之间必须开启防火墙信任。

分别启动两个tomcat&#xff0c;查看每一个tomcat是否都启动了8080端口以及4001端口

再用netstat –an 查看链接情况

tcp        0      0 172.23.254.2:43320      172.23.254.3:4001      ESTABLISHED

tcp        0      0 172.23.254.2:46544      172.23.254.3:4001      TIME_WAIT  

tcp        0      0 172.23.254.2:40118      172.23.254.3:4001      ESTABLISHED

tcp        0      0 172.23.254.2:4001       172.23.254.3:48804     ESTABLISHED

tcp        0      0 172.23.254.2:4001       172.23.254.3:34254     ESTABLISHED

如果两台机器的4001端口分别建立了连接&#xff0c;则说明集群配置成功&#xff0c;可以进行session复制。



可能存在的问题

1&#xff0c;  session复制问题

以前用apache做负载均衡的时候&#xff0c;是选择了用 session sticky的模式&#xff0c;这样的话&#xff0c;用户每次进来都会是同一个服务器中的session&#xff0c;不会被转发到其他的服务器上。在这样的情况下&#xff0c;tomcat即使不做session复制也不会影响用户访问。但是nginx并不支持sticky功能。所以必须要做session复制。否则很多地方就根本没法用。比如登录过程&#xff0c;先等到了第一个tomcat上&#xff0c;产生了一个session&#xff0c;在刷新页面&#xff0c;刷到另外一个tomcat的机器上&#xff0c;没有这个session&#xff0c;就会出现问题了。所以程序员在写jsp的时候也要注意这一点

举个简单的例子&#xff0c;比如我们在单机应用情况下修改SESSION中用户的某一个数据&#xff0c;那么通常就是&#xff1a;
User user &#61; (User)request.getSession().getAttribute(“user”);
User.setName(“my name”);
    这样我们就是直接存取出来&#xff0c;然后进行修改&#xff0c;虽然在单机情况下没有问题&#xff0c;但是在集群条件下&#xff0c;这样就导致了多台WEB服务器上的SESSION不同步的问题&#xff0c;因为SESSION并没有改变&#xff0c;Tomcat无法监视session中某个数据的值是否发生了变化。因此&#xff0c;我们还需要执行如下操作以保证SESSION的同步&#xff1a;
Request.getSession().setAttribute(“user”, user);
    所以&#xff0c;我们在操作SESSION的时候要特别注意&#xff01;另外的建议就是&#xff0c;我们应该尽可能的不要修改SESSION中的数据。


可能经常会遇到session复制不正常的情况。除了在服务端找原因再也程序上找下原因。都是有可能导致session复制不正常的


2.页面同步

为确保后面tomcat的服务器上的页面程序是一致的&#xff0c;可以采用如下方式

a,rsync同步&#xff0c;或者做成页面按钮&#xff0c;提供给编辑&#xff0c;修改了程序即使点击同步

b,共享区域存储&#xff0c;或者采取drbd网络raid模式


3&#xff0c;确认nginx可以转发成功&#xff0c;

在nginx上wget一下后面转发的url&#xff08;包过端口&#xff09;&#xff0c;如果可以打开&#xff0c;那就可以转发过去。如果不能打开&#xff0c;则无法转发

 

 

 

 

 

 

 

http://surpassdream.blog.51cto.com/1347340/544270

http://wgkgood.blog.51cto.com/

nginx rewrite 参数和例子

http://www.cnblogs.com/analyzer/articles/1377684.html

]

本位转自&#xff1a;http://blog.c1gstudio.com/archives/434

推荐参考地址&#xff1a;
Mailing list ARChives 官方讨论区
http://marc.info/?l&#61;nginx

Nginx 常见应用技术指南[Nginx Tips]
http://bbs.linuxtone.org/thread-1685-1-1.html

本日志内容来自互联网和平日使用经验&#xff0c;整理一下方便日后参考。

正则表达式匹配&#xff0c;其中&#xff1a;

  1. * ~ 为区分大小写匹配
  2. * ~* 为不区分大小写匹配
  3. * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配&#xff0c;其中&#xff1a;

  1. * -f和!-f用来判断是否存在文件
  2. * -d和!-d用来判断是否存在目录
  3. * -e和!-e用来判断是否存在文件或目录
  4. * -x和!-x用来判断文件是否可执行

flag标记有&#xff1a;

  1. * last 相当于Apache里的[L]标记&#xff0c;表示完成rewrite
  2. * break 终止匹配, 不再匹配后面的规则
  3. * redirect 返回302临时重定向 地址栏会显示跳转后的地址
  4. * permanent 返回301永久重定向 地址栏会显示跳转后的地址

一些可用的全局变量有&#xff0c;可以用做条件判断(待补全)

  1. $args
  2. $content_length
  3. $content_type
  4. $document_root
  5. $document_uri
  6. $host
  7. $http_user_agent
  8. $http_COOKIE
  9. $limit_rate
  10. $request_body_file
  11. $request_method
  12. $remote_addr
  13. $remote_port
  14. $remote_user
  15. $request_filename
  16. $request_uri
  17. $query_string
  18. $scheme
  19. $server_protocol
  20. $server_addr
  21. $server_name
  22. $server_port
  23. $uri

结合QeePHP的例子

  1. if (!-d $request_filename) {
  2. rewrite ^/([a-z-A-Z]&#43;)/([a-z-A-Z]&#43;)/?(.*)$ /index.php?namespace&#61;user&controller&#61;$1&action&#61;$2&$3 last;
  3. rewrite ^/([a-z-A-Z]&#43;)/?$ /index.php?namespace&#61;user&controller&#61;$1 last;
  4. break;

多目录转成参数
abc.domian.com/sort/2 &#61;> abc.domian.com/index.php?act&#61;sort&name&#61;abc&id&#61;2

  1. if ($host ~* (.*)/.domain/.com) {
  2. set $sub_name $1;   
  3. rewrite ^/sort//(/d&#43;)//?$ /index.php?act&#61;sort&cid&#61;$sub_name&id&#61;$1 last;
  4. }

目录对换
/123456/xxxx -> /xxxx?id&#61;123456

  1. rewrite ^/(/d&#43;)/(.&#43;)/ /$2?id&#61;$1 last;

例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下&#xff1a;

  1. if ($http_user_agent ~ MSIE) {
  2. rewrite ^(.*)$ /nginx-ie/$1 break;
  3. }

目录自动加“/”

  1. if (-d $request_filename){
  2. rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  3. }

禁止htaccess

  1. location ~//.ht {
  2.          deny all;
  3.      }

禁止多个目录

  1. location ~ ^/(cron|templates)/ {
  2.          deny all;
  3. break;
  4.      }

禁止以/data开头的文件
可以禁止/data/下多级目录下.log.txt等请求;

  1. location ~ ^/data {
  2.          deny all;
  3.      }

禁止单个目录
不能禁止.log.txt能请求

  1. location /searchword/cron/ {
  2.          deny all;
  3.      }

禁止单个文件

  1. location ~ /data/sql/data.sql {
  2.          deny all;
  3.      }

给favicon.ico和robots.txt设置过期时间;
这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志

  1. location ~(favicon.ico) {
  2.                  log_not_found off;
  3. expires 99d;
  4. break;
  5.      }
  6.  
  7.      location ~(robots.txt) {
  8.                  log_not_found off;
  9. expires 7d;
  10. break;
  11.      }

设定某个文件的过期时间;这里为600秒&#xff0c;并不记录访问日志

  1. location ^~ /html/scripts/loadhead_1.js {
  2.                  access_log   off;
  3.                  root /opt/lampp/htdocs/web;
  4. expires 600;
  5. break;
  6.        }

文件反盗链并设置过期时间
这里的return 412 为自定义的http状态码&#xff0c;默认为403&#xff0c;方便找出正确的盗链的请求
“rewrite ^/ http://leech.c1gstudio.com/leech.gif;”显示一张防盗链图片
“access_log off;”不记录访问日志&#xff0c;减轻压力
“expires 3d”所有文件3天的浏览器缓存

  1. location ~* ^.&#43;/.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
  2. valid_referers none blocked *.c1gstudio.com *.c1gstudio.net localhost 208.97.167.194;
  3. if ($invalid_referer) {
  4.     rewrite ^/ http://leech.c1gstudio.com/leech.gif;
  5.     return 412;
  6.     break;
  7. }
  8.                  access_log   off;
  9.                  root /opt/lampp/htdocs/web;
  10. expires 3d;
  11. break;
  12.      }

只充许固定ip访问网站&#xff0c;并加上密码

  1. root  /opt/htdocs/www;
  2. allow   208.97.167.194;
  3. allow   222.33.1.2;
  4. allow   231.152.49.4;
  5. deny    all;
  6. auth_basic "C1G_ADMIN";
  7. auth_basic_user_file htpasswd;

将多级目录下的文件转成一个文件&#xff0c;增强seo效果
/job-123-456-789.html 指向/job/123/456/789.html

  1. rewrite ^/job-([0-9]&#43;)-([0-9]&#43;)-([0-9]&#43;)/.html$ /job/$1/$2/jobshow_$3.html last;

将根目录下某个文件夹指向2级目录
如/shanghaijob/ 指向 /area/shanghai/
如果你将last改成permanent&#xff0c;那么浏览器地址栏显是/location/shanghai/

  1. rewrite ^/([0-9a-z]&#43;)job/(.*)$ /area/$1/$2 last;

上面例子有个问题是访问/shanghai 时将不会匹配

  1. rewrite ^/([0-9a-z]&#43;)job$ /area/$1/ last;
  2. rewrite ^/([0-9a-z]&#43;)job/(.*)$ /area/$1/$2 last;

这样/shanghai 也可以访问了&#xff0c;但页面中的相对链接无法使用&#xff0c;
如./list_1.html真实地址是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。

那我加上自动跳转也是不行咯
(-d $request_filename)它有个条件是必需为真实目录&#xff0c;而我的rewrite不是的&#xff0c;所以没有效果

  1. if (-d $request_filename){
  2. rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  3. }

知道原因后就好办了&#xff0c;让我手动跳转吧

  1. rewrite ^/([0-9a-z]&#43;)job$ /$1job/ permanent;
  2. rewrite ^/([0-9a-z]&#43;)job/(.*)$ /area/$1/$2 last;

文件和目录不存在的时候重定向&#xff1a;

  1. if (!-e $request_filename) {
  2. proxy_pass http://127.0.0.1;
  3. }

域名跳转

  1. server
  2.      {
  3.              listen       80;
  4.              server_name  jump.c1gstudio.com;
  5.              index index.html index.htm index.php;
  6.              root  /opt/lampp/htdocs/www;
  7.              rewrite ^/ http://www.c1gstudio.com/;
  8.              access_log  off;
  9.      }

多域名转向

  1. server_name  www.c1gstudio.com www.c1gstudio.net;
  2.              index index.html index.htm index.php;
  3.              root  /opt/lampp/htdocs;
  4. if ($host ~ "c1gstudio/.net") {
  5. rewrite ^(.*) http://www.c1gstudio.com$1 permanent;
  6. }

三级域名跳转

  1. if ($http_host ~* "^(.*)/.i/.c1gstudio/.com$") {
  2. rewrite ^(.*) http://top.yingjiesheng.com$1;
  3. break;
  4. }

域名镜向

  1. server
  2.      {
  3.              listen       80;
  4.              server_name  mirror.c1gstudio.com;
  5.              index index.html index.htm index.php;
  6.              root  /opt/lampp/htdocs/www;
  7.              rewrite ^/(.*) http://www.c1gstudio.com/$1 last;
  8.              access_log  off;
  9.      }

某个子目录作镜向

  1. location ^~ /zhaopinhui {
  2.   rewrite ^.&#43; http://zph.c1gstudio.com/ last;
  3.   break;
  4.      }

discuz ucenter home (uchome) rewrite

  1. rewrite ^/(space|network)-(.&#43;)/.html$ /$1.php?rewrite&#61;$2 last;
  2. rewrite ^/(space|network)/.html$ /$1.php last;
  3. rewrite ^/([0-9]&#43;)$ /space.php?uid&#61;$1 last;

discuz 7 rewrite

  1. rewrite ^(.*)/archiver/((fid|tid)-[/w/-]&#43;/.html)$ $1/archiver/index.php?$2 last;
  2. rewrite ^(.*)/forum-([0-9]&#43;)-([0-9]&#43;)/.html$ $1/forumdisplay.php?fid&#61;$2&page&#61;$3 last;
  3. rewrite ^(.*)/thread-([0-9]&#43;)-([0-9]&#43;)-([0-9]&#43;)/.html$ $1/viewthread.php?tid&#61;$2&extra&#61;page/%3D$4&page&#61;$3 last;
  4. rewrite ^(.*)/profile-(username|uid)-(.&#43;)/.html$ $1/viewpro.php?$2&#61;$3 last;
  5. rewrite ^(.*)/space-(username|uid)-(.&#43;)/.html$ $1/space.php?$2&#61;$3 last;
  6. rewrite ^(.*)/tag-(.&#43;)/.html$ $1/tag.php?name&#61;$2 last;

给discuz某版块单独配置域名

  1. server_name  bbs.c1gstudio.com news.c1gstudio.com;
  2.  
  3.      location &#61; / {
  4.         if ($http_host ~ news/.c1gstudio.com$) {
  5.   rewrite ^.&#43; http://news.c1gstudio.com/forum-831-1.html last;
  6.   break;
  7. }
  8.      }

discuz ucenter 头像 rewrite 优化

  1. location ^~ /ucenter {
  2.      location ~ .*/.php?$
  3.      {
  4.   #fastcgi_pass  unix:/tmp/php-cgi.sock;
  5.   fastcgi_pass  127.0.0.1:9000;
  6.   fastcgi_index index.php;
  7.   include fcgi.conf;     
  8.      }
  9.  
  10.      location /ucenter/data/avatar {
  11. log_not_found off;
  12. access_log   off;
  13. location ~ /(.*)_big/.jpg$ {
  14.     error_page 404 /ucenter/images/noavatar_big.gif;
  15. }
  16. location ~ /(.*)_middle/.jpg$ {
  17.     error_page 404 /ucenter/images/noavatar_middle.gif;
  18. }
  19. location ~ /(.*)_small/.jpg$ {
  20.     error_page 404 /ucenter/images/noavatar_small.gif;
  21. }
  22. expires 300;
  23. break;
  24.      }
  25.                        }

jspace rewrite

  1. location ~ .*/.php?$
  2.              {
  3.                   #fastcgi_pass  unix:/tmp/php-cgi.sock;
  4.                   fastcgi_pass  127.0.0.1:9000;
  5.                   fastcgi_index index.php;
  6.                   include fcgi.conf;     
  7.              }
  8.  
  9.              location ~* ^/index.php/
  10.              {
  11.     rewrite ^/index.php/(.*) /index.php?$1 break;
  12.                   fastcgi_pass  127.0.0.1:9000;
  13.                   fastcgi_index index.php;
  14.                   include fcgi.conf;
  15.              }
http://blog.csdn.net/cnbird2008/article/details/4409620


推荐阅读
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 本文介绍了如何将Spring属性占位符与Jersey的@Path和@ApplicationPath注解结合使用,以便在资源路径中动态解析属性值。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 一、Tomcat安装后本身提供了一个server,端口配置默认是8080,对应目录为:..\Tomcat8.0\webapps二、Tomcat8.0配置多个端口,其实也就是给T ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • web页面报表js下载,web报表软件 ... [详细]
  • ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ... [详细]
  • 开发笔记:前端之前端初识
    开发笔记:前端之前端初识 ... [详细]
  • MOSS2007 中型服务场配置指南:网络负载均衡集群设置
    本文详细介绍了如何在MOSS2007环境中配置网络负载均衡集群,包括安装和配置网络负载均衡功能的具体步骤。通过本文,读者可以了解如何在多台Web服务器上安装并配置网络负载均衡,以实现高效的服务分发。 ... [详细]
  • 本文为初学者提供了一条清晰的学习路线,帮助他们逐步成长为优秀的Web开发人员。通过十个关键步骤,涵盖从基础到高级的各个方面,确保每位学习者都能找到适合自己的学习方向。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
author-avatar
荆灬樊小姐_526
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有