Nginx反向代理Tomcat服务器

Nginx反向代理Tomcat服务器
Nginx反向代理Tomcat服务器

一、Tomcat

基本配置

1.为Tomcat提供SysV脚本

2.catalina 脚本讲解

3.telnet 登录管理Tomcat

4.配置Tomcat虚拟主机

5.Tomcat图形管理接口

6.部署JSP网站案例

二、Nginx反向代理Tomcat服务器

1.Nginx将请求反向代理到后端Tomcat

2.Nginx将图片缓存到本地

3.Nginx将请求实现动静分离

注,实验环境说明,操作系统:CentOS 6.4 x86_64,软件版本:jdk-7u40、

apache-tomcat-7.0.42、Nginx-1.4.2,博客中所用到的软件请到这里下载:

https://www.360docs.net/doc/374137698.html,/QGBCLwrZnpLMS。

一、Tomcat 基本配置

1.为Tomcat提供SysV脚本

注,在上一篇博文中我们已经演示安装了Tomcat,这里我们就不在演示,不清楚的博友可以参考这篇博文,https://www.360docs.net/doc/374137698.html,/2033581/1299644,在上一篇博文中我们没有增加,SysV脚本,在这篇博文中我们来增加一下,下面我们就来具体演示一下。

[root@tomcat ~]# vim /etc/init.d/tomcat

#!/bin/sh

# Tomcat init script for Linux.

#

# chkconfig: 2345 96 14

# description: The Apache Tomcat servlet/JSP container.

CATALINA_HOME=/usr/local/tomcat #注意你的脚本路径

export CATALINA_HOME

# export CATALINA_OPTS="-Xms128m -Xmx256m"

exec $CATALINA_HOME/bin/catalina.sh $*

下面我们来增加执行权限,并加入服务列表设置开机自启动,

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

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

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

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

下面我们来启动一下Tomcat并测试一下,

[root@tomcat ~]# service tomcat start

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

查看一下启动的端口号,

[root@tomcat ~]# netstat -ntulp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Progra m name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1044/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1121/master

tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 12988/sshd

tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 13053/sshd

tcp 0 0 :::8080 :::* LISTEN 13088/java

tcp 0 0 :::22 :::* LISTEN 1044/sshd

tcp 0 0 ::1:25 :::* LISTEN 1121/master

tcp 0 0 ::1:6010 :::* LISTEN 12988/sshd

tcp 0 0 ::1:6011 :::* LISTEN 13053/sshd

tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 13088/java

tcp 0 0 :::8009 :::* LISTEN 13088/java

用浏览器访问一下,

好了,到这里Tomcat的SysV脚本增加完成,下面我们来说一下catalina脚本。

2.catalina 脚本讲解

首先我们来查看一下这个脚本,

[root@tomcat bin]# catalina.sh -h

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr/java/jdk1.7.0_40

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

Usage: catalina.sh ( commands ... )

commands:

debug Start Catalina in a debugger

debug -security Debug Catalina with a security manager

jpda start Start Catalina under JPDA debugger

run Start Catalina in the current window

run -security Start in the current window with security manager

start Start Catalina in a separate window

start -security Start in a separate window with security manager

stop Stop Catalina, waiting up to 5 seconds for the process to end

stop n Stop Catalina, waiting up to n seconds for the process to end

stop -force Stop Catalina, wait up to 5 seconds and then use kill -KILL if still ru nning

stop n -force Stop Catalina, wait up to n seconds and then use kill -KILL if still r unning

configtest Run a basic syntax check on server.xml - check exit code for result version What version of tomcat are you running?

Note: Waiting for the process to end and use of the -force option require that $CA TALINA_PID is defined

注,从帮助上来看,这个脚本使用还是挺简单的。下面我们来说几个常用的选项,catalina.sh

下面我们就来具体演示一下,

[root@tomcat ~]# catalina.sh configtest

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr/java/jdk1.7.0_40

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

九月 21, 2013 11:08:26 下午 org.apache.catalina.core.AprLifecycleListener init

息: The APR based Apache Tomcat Native library which allows optimal performanc e in production environments was not found on the java.library.path: /usr/java/p ackages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

九月 21, 2013 11:08:27 下午 org.apache.coyote.AbstractProtocol init

信息: Initializing ProtocolHandler ["http-bio-8080"]

九月 21, 2013 11:08:27 下午 org.apache.coyote.AbstractProtocol init

信息: Initializing ProtocolHandler ["ajp-bio-8009"]

九月 21, 2013 11:08:27 下午 org.apache.catalina.startup.Catalina load

信息: Initialization processed in 1269 ms

注,使用configtest选项时,得关闭Tomcat,不然会报错。

启动Tomcat,

[root@tomcat ~]# catalina.sh start

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr/java/jdk1.7.0_40

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

关闭Tomcat,

[root@tomcat ~]# catalina.sh stop

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr/java/jdk1.7.0_40

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

查看Tomcat版本,

[root@tomcat ~]# catalina.sh version

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr/java/jdk1.7.0_40

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

Server version: Apache Tomcat/7.0.42

Server built: Jul 2 2013 08:57:41

Server number: 7.0.42.0

OS Name: Linux

OS Version: 2.6.32-358.el6.x86_64

Architecture: amd64

JVM Version: 1.7.0_40-b43

JVM Vendor: Oracle Corporation

好了,catalina脚本,我们就说到这里了,下面我们来说一下telnet管理Tomcat。

3.telnet 登录管理Tomcat

注,在说telnet管理Tomcat之前,我们得先看一下默认的配置文件,这里面定义了默认的管理端口,

[root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml

说明,定义了一个管理端口为8005,我们可以用telnet直接登录进本机的8005端口,来执行SHUTDOWN命令,来关闭Tomcat实例。下面我们来具体演示一下,

先安装telnet客户端,

[root@tomcat ~]# yum install -y telnet

下面我们一测试并查看,

[root@tomcat ~]# telnet localhost 8005

Trying ::1...

telnet: connect to address ::1: Connection refused

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

SHUTDOWN #输入SHOWDOWN就可以直接关闭Tomcat服务。

Connection closed by foreign host.

[root@tomcat ~]# netstat -ntulp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Progra m name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1044/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1121/master

tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 12988/sshd

tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 13053/sshd

tcp 0 0 :::22 :::* LISTEN 1044/sshd

tcp 0 0 ::1:25 :::* LISTEN 1121/master

tcp 0 0 ::1:6010 :::* LISTEN 12988/sshd

tcp 0 0 ::1:6011 :::* LISTEN 13053/sshd

注,大家可以看到Tomcat服务器已经关闭。好了,telnet管理我们就说到这里,下面我们来说一下,Tomcat虚拟主机的配置。

4.配置Tomcat虚拟主机

注,在说Tomcat虚拟主机之前,咱们来详细的看看默认的配置文件,虽然在上一篇博客中全部有讲解,在这篇博客中我还是再和大家简单说一下,下面是默认配置文件。大家可以看到,绝大部分的配置文件是注释,包含在、全是注释。下面我们就来具体的看看,注释我们就不说了,说具体的定义的内容

[root@tomcat ~]# cat /usr/local/tomcat/conf/server.xml

this work for additional information regarding copyright ownership.

The ASF licenses this file to You under the Apache License, Version 2.0

(the "License"); you may not use this file except in compliance with

the License. You may obtain a copy of the License at

https://www.360docs.net/doc/374137698.html,/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implie d.

See the License for the specific language governing permissions and

limitations under the License.

-->

#大家可以看到,这里是我们刚才讲解的,定义一个管理接口

type="https://www.360docs.net/doc/374137698.html,erDatabase"

description="User database that can be updated and saved"

factory="https://www.360docs.net/doc/374137698.html,ers.MemoryUserDatabaseFactory"

pathname="conf/tomcat-users.xml" />

#定义一个Service命令为Catalina

connectionTimeout="20000"

redirectPort="8443" /> #这里定义了一个连接器,协议为http,端口为8080,最大连接超时为20s,这里还定义了一个SSL的重定向端口8443。我们可以根据需要进行修改。一般我们都用80端口与443端口。

redirectPort="8443" />

-->

#这里定义了一个支持AJP协议的连接器。

#这里定义了一个名为Catalina 的引擎,并定义了一个默认主机为localhost。

resourceName="UserDatabase"/>

unpackWARs="true" autoDeploy="true"> #这里就是定义的虚拟主机。

prefix="localhost_access_log." suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" /> #这里定义了一个日志相关的属性。

好了,在这里我们又简单的说明一下,配置文件下面我们就来具体演示一下怎么配置虚拟主机。首先,我们来修改一下配置文件,

[root@tomcat conf]# vim server.xml

#增加下面几行

unpackWARs="true" autoDeploy="true">

接下来我们来创建文档目录与测试页面,

[root@tomcat ~]# mkdir -pv /web/webapp

[root@tomcat ~]# cd /web/webapp

[root@tomcat webapp]# vim index.jsp

<%@ page language="java" %>

<%@ page import="java.util.*" %>

JSP test page.

<% out.println("Welcome to test. Site, https://www.360docs.net/doc/374137698.html,"); %>

现在我们来测试一下我们修改的配置文件,

[root@tomcat ~]# service tomcat stop

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

^[[A[root@tomcat service tomcat configtest

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

Sep 22, 2013 2:15:47 AM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal perform ance in production environments was not found on the java.library.path: /usr/jav a/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

Sep 22, 2013 2:15:47 AM org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler ["http-bio-80"]

Sep 22, 2013 2:15:47 AM org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler ["ajp-bio-8009"]

Sep 22, 2013 2:15:47 AM org.apache.catalina.startup.Catalina load

INFO: Initialization processed in 1294 ms

注,大家可以看到,我们这里没有报错,说明配置都是正确的,若配置有错误,会在最后一行提醒你。

再下面我们来启动Tomcat并测试一下,

[root@tomcat ~]# service tomcat start

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

[root@tomcat ~]# netstat -ntulp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1044/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1121/master tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 13368/sshd tcp 0 0

127.0.0.1:6011 0.0.0.0:* LISTEN 13387/sshd tcp 0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 13407/sshd tcp 0 0 :::80 :::* LISTEN 13557/java tcp 0 0 :::22 :::* LISTEN 1044/sshd tcp 0 0 ::1:25 :::* LISTEN 1121/master tcp 0 0 ::1:6010 :::* LISTEN 13368/sshd tcp 0 0 ::1:6011 :::* LISTEN 13387/sshd tcp 0 0 ::1:6012 :::* LISTEN 13407/sshd tcp 0 0 :::8009 :::* LISTEN 13557/java

注,还有一点得说明一下,我这里为了方便测试,将默认端口8080修改为了80端口。下面是测试效果,

为了帮助大家理解,我们这里再次讲解一下,Host组件与Context组件以及相关属性。

Host组件:

位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机,如前面我们自定义的内容:

unpackWARs="true" autoDeploy="true">

常用属性说明:

name:定义虚拟主机的域名

appBase:此Host的webapps目录,即存放非归档的web应用程序的目录或归档后的WAR 文件的目录路径;可以使用基于$CATALINA_HOME的相对路径;

autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true;

unpackWars:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true;

主机别名定义:

如果一个主机有两个或两个以上的主机名,额外的名称均可以以别名的形式进行定义,如下:

https://www.360docs.net/doc/374137698.html,

Context组件:

Context在某些意义上类似于apache中的路径别名,一个Context定义用于标识tomcat实例中的一个Web应用程序。如下面的定义:

docBase="/web/threads/bbs"

reloadable="true">

在Tomcat中,每一个context定义也可以使用一个单独的XML文件进行,其文件的目录为$CATALINA_HOME/conf//。可以用于Context中的XML 元素有Loader,Manager,Realm,Resources和WatchedResource。

常用的属性定义有:

docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context 所属Host中appBase定义的路径;切记,docBase的路径名不能与相应的Host中appBase

中定义的路径名有包含关系,比如,如果appBase为deploy,而docBase绝不能为deploy-bbs 类的名字;

path:相对于Web服务器根路径而言的URI;如果为空“”,则表示为此webapp的根路径;如果context定义在一个单独的xml文件中,此属性不需要定义;

reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false;

为了便于大家理解,我们这里再定义一个Context并测试一下,

我们先来修改一下配置文件

[root@tomcat conf]# vim server.xml

unpackWARs="true" autoDeploy="true">

#增加这一行

下面来增加目录文档与测试文件,

[root@tomcat webapp]# mkdir /web/test

[root@tomcat webapp]# cd /web/test

[root@tomcat test]# vim index.jsp

<%@ page language="java" %>

TomcatA

TomcatA

<% session.setAttribute("abc","abc"); %>

Session ID<%= session.getId() %>
Created on<%= session.getCreationTime() %>

测试一下配置文件是否有错并启动Tomcat,

[root@tomcat ~]# service tomcat configtest Using CATALINA_BASE:

/usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using

CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH:

/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Sep 22, 2013 2:40:57 AM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:

/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib Sep 22, 2013 2:40:58 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-bio-80"] Sep 22, 2013 2:40:58 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] Sep 22, 2013 2:40:58 AM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 1352 ms [root@tomcat ~]# service tomcat start

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

[root@tomcat ~]# netstat -ntulp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1044/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1121/master tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 13587/sshd tcp 0 0

127.0.0.1:6011 0.0.0.0:* LISTEN 13387/sshd tcp 0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 13407/sshd tcp 0 0 :::80 :::* LISTEN 13945/java tcp 0 0 :::22 :::* LISTEN 1044/sshd tcp 0 0 ::1:25 :::* LISTEN 1121/master tcp 0 0 ::1:6010 :::* LISTEN 13587/sshd tcp 0 0 ::1:6011 :::* LISTEN 13387/sshd tcp 0 0 ::1:6012 :::* LISTEN 13407/sshd tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 13945/java tcp 0

0 :::8009 :::* LISTEN 13945/java

下面我们就用浏览器测试一下,

好了,到这里我们的Tomcat虚拟主机的讲解就到这里了,下面我们来说一下Tomcat图形管理接口。

5.Tomcat图形管理接口

我们先来看一下默认的图形配置界面,

注,大家注意看右上角,我用红色方框标记出来的,大家可以看有三个按钮,分别为

Server Status 主要用来查看服务器的状态

Manager App 主要用来管理应用程序的部署及监控

Host Manager 主要用来管理虚拟主机

下面我们就来具休的配置一下,大家可以看到,你点击任何一个按钮都要输入用户名和密码的,在我们配置之前我们先来说一下,Tomcat的Manager功能,

Manager的四个管理角色:

manager-gui - allows access to the HTML GUI and the status pages

manager-script - allows access to the text interface and the status pages

manager-jmx - allows access to the JMX proxy and the status pages

manager-status - allows access to the status pages only

注,这里我说一下,上面的英文比较简单我就不在里翻译了,大家自己看一下。

下面我们就来启用manager功能,修改tomcat-user.xml文件,添加如下行:

简单解释一下,Tomcat有内置的角色,我们这里增加了两个角色一个为manager-gui,另一个为admin-gui,用户名和密码都为tomcat。

注,增加的内容一定要在之间。不然,不会生效。好了,下面我们一来测试一下配置文件,并重新启动一下Tomcat

[root@tomcat ~]# service tomcat configtest Using CATALINA_BASE:

/usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using

CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH:

/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Sep 22, 2013 3:08:44 AM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:

/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib Sep 22, 2013 3:08:44 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-bio-80"] Sep 22, 2013 3:08:44 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] Sep 22, 2013 3:08:44 AM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 1213 ms [root@tomcat ~]# service tomcat start

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

[root@tomcat ~]# netstat -ntulp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1044/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1121/master tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 13587/sshd tcp 0 0

127.0.0.1:6011 0.0.0.0:* LISTEN 13387/sshd tcp 0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 13407/sshd tcp 0 0 :::80 :::* LISTEN 14197/java tcp 0 0 :::22 :::* LISTEN 1044/sshd tcp 0 0 ::1:25 :::* LISTEN 1121/master tcp 0 0 ::1:6010 :::* LISTEN 13587/sshd tcp 0 0 ::1:6011 :::* LISTEN 13387/sshd tcp 0 0 ::1:6012 :::* LISTEN 13407/sshd tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 14197/java tcp 0

0 :::8009 :::* LISTEN 14197/java

好了,下面我们用浏览器查看一下,

注,点击Server Status按钮,让你输入用户名和密码。我这里全部设置是tomcat。

然后,会出现以下界面。显示全部服务器运行状态!大家可以仔细的看一下,我就不带着大家看了。

下面是应用程序部署管理界面,

下面是虚拟主机管理页面,

注,我们一般在生产环境中用的最多是应用程序部署界面,可以进行热布署应用程序,很方便,大家可以尝试一下。好了,图形管理界面我们就说到这里了,下面我们来说一下,Tomcat的一个小案例。我们说了那么多,有朋友就会说了,怎么一个案例也没有呢?下面我们就来布署一个社交网站的案例JavaCenter Home。

6.部署JSP网站案例

首页,我们来修改一下配置文件,

[root@tomcat conf]# vim server.xml

unpackWARs="true" autoDeploy="true">

注,增加一下虚拟主机,文件目录为/web/webapp。

下面我们来解压一下我们下载好的JavaCenter Home网站程序,

[root@tomcat src]# tar xf JavaCenter_Home_2.0_GBK.tar.bz2

接下来将解压好的JavaCenter Home程序移动到/web/webapp下,

[root@tomcat src]# cd JavaCenter_Home_2.0_GBK

[root@tomcat JavaCenter_Home_2.0_GBK]# mv * /web/webapp/

下面我们来测试一下配置文件并启动Tomcat服务,

[root@tomcat ~]# service tomcat configtest

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr/java/jdk1.6.0_21

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

Sep 23, 2013 5:31:18 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal perform ance in production environments was not found on the java.library.path: /usr/jav a/jdk1.6.0_21/jre/lib/amd64/server:/usr/java/jdk1.6.0_21/jre/lib/amd64:/usr/ja va/jdk1.6.0_21/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64: /lib:/usr/lib

Sep 23, 2013 5:31:20 PM org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler ["http-bio-80"]

Sep 23, 2013 5:31:20 PM org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler ["ajp-bio-8009"]

Sep 23, 2013 5:31:20 PM org.apache.catalina.startup.Catalina load

INFO: Initialization processed in 2493 ms

[root@tomcat ~]# service tomcat start

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr/java/jdk1.6.0_21

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/to mcat-juli.jar

[root@tomcat ~]# netstat -ntulp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Progra m name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1026/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1256/master

tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 1339/sshd

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1165/mysqld

tcp 0 0 :::80 :::* LISTEN 1499/java

tcp 0 0 :::22 :::* LISTEN 1026/sshd

tcp 0 0 ::1:25 :::* LISTEN 1256/master

tcp 0 0 ::1:6010 :::* LISTEN 1339/sshd

tcp 0 0 :::8009 :::* LISTEN 1499/java

下面我们用浏览器访问一下,https://www.360docs.net/doc/374137698.html,(注,要想用域名访问,必须配置本机有hosts文件,Windows7hosts文件目录,C:\Windows\System32\drivers\etc\hosts)

注,上面的错误说明我们连接Mysql数据库失败。因为我们这里还没有安装与配置嘛。下面我们赶快来配置一下,

先安装数据库,我们这里就用yum安装一下,

[root@tomcat ~]# yum install -y mysql-server

下面来启动并配置mysql,

[root@tomcat ~]# service mysqld start

Starting mysqld: [ OK ]

[root@tomcat ~]# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.1.69 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

好了,到这里我们mysql就安装完成了,下面我们来看一下我们的程序目录,

[root@tomcat ~]# cd /web/webapp/

[root@tomcat webapp]# ls

admin avatar.jsp data help.jsp js.jsp rss.jsp userapp.jsp

admincp.jsp config.properties do.jsp image link.jsp source WEB-INF

api contact.jsp editor.jsp index.jsp magic.jsp space.jsp xmlrpc.jsp

nginx负载均衡宕机配置

1.摘要 (1)结论 详细描述了nginx记录失效节点的6种状态(time out、connect refuse、500、502、503、504,后四项5XX需要配置proxy_next_upstream中的状态才可 以生效)、失效节点的触发条件和节点的恢复条件、所有节点失效后nginx会进 行恢复并进行重新监听。 (2)Nginx 负载均衡方式介绍 Nginx的负载均衡方式一共有4种:rr(轮询模式)、ip_hash、fair、url_hash。(3)Ngxin负载均衡和相关反向代理配置内容 Nginx负载均衡和与容错相关的反向代理的配置。 (4)获取后端流程 后端server的自动容错流程图。 (5)测试环境和测试结果 针对几种错误方式进行自动容错测试。 2.结论 (1)nginx 判断节点失效状态 Nginx 默认判断失败节点状态以connect refuse和time out状态为准,不以HTTP错误状态进行判断失败,因为HTTP只要能返回状态说明该节点还可以正常连接,所以nginx判断其还是存活状态;除非添加了proxy_next_upstream指令设置 对404、502、503、504、500和time out等错误进行转到备机处理,在 next_upstream过程中,会对fails进行累加,如果备用机处理还是错误则直接返回错误信息(但404不进行记录到错误数,如果不配置错误状态也不对其进行错误状态记录),综述,nginx记录错误数量只记录timeout 、connect refuse、502、500、503、504这6种状态,timeout和connect refuse是永远被记录错误状态,而502、500、503、504只有在配置proxy_next_upstream后nginx才会记录这4种HTTP 错误到fails中,当fails大于等于max_fails时,则该节点失效; (2)nginx 处理节点失效和恢复的触发条件 nginx可以通过设置max_fails(最大尝试失败次数)和fail_timeout(失效时间,在到达最大尝试失败次数后,在fail_timeout的时间范围内节点被置为失效,除非所 有节点都失效,否则该时间内,节点不进行恢复)对节点失败的尝试次数和失效时间 进行设置,当超过最大尝试次数或失效时间未超过配置失效时间,则nginx会对节点 状会置为失效状态,nginx不对该后端进行连接,直到超过失效时间或者所有节点都 失效后,该节点重新置为有效,重新探测;

Nginx反向代理服务器的工作原理

最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡。所以搜罗了一些关于反向代理服务器的内容,整理综合。 一概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。 图1 反向代理服务器的基本原理 二反向代理服务器的工作原理 反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。 1,作内容服务器的替身 如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火

墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。 当客户机向提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。 这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。 图2 反向代理服务器作为内容服务器的替身 可以配置防火墙路由器,使其只允许特定端口上的特定服务器(在本例中为其所分配端口上的代理服务器)有权通过防火墙进行访问,而不允许其他任何机器进出。 2,作为内容服务器的负载均衡器 可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。 对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可

使用Nginx搭建反向代理

引言:最近公司有台服务器遭受DDOS攻击,流量在70M以上,由于服务器硬件配置较高所以不需要DDOS硬件防火墙。但我们要知道,IDC机房是 肯定不允许这种流量一直处于这么高的,因为没法具体知道后面陆续攻击的流量会有多大,如果流量过大就会导致整个IDC网络瘫痪。我们都知道北方的数据中心和南方的数据中心从带宽出口上来讲南方多数机房完全有能力扛得住DDOS攻击,东莞的电信机房就不错。有朋友说过面对这种攻击可以在南方电信 在放一台服务器,然后做个反向代理;令我不解的是倘若再在南方放一台服务器,然后在南方电信服务器上做反向代理的话北方的用户访问速度肯定会很慢(南方机房多为电信单线,北京的多为双线或BGP线路)。好了,我们言归正传,不管用反向代理是怎么去实现,首先我们要解决的是如何搭建一台反向代理服务器,免得临时抱佛脚。 首先我们来看理解一下什么是反向代理,如下图:当客户机向站点发出请求时,请求将转到代理服务器,然后然后代理服务器将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户,对于访问服务器的用户来讲,此时的代理服务器对外就表现为一台服务器;我们还可以在反向代理服务器上加上一些策略,这样就对web服务器进行了一种安全保护,即使用户想入侵网站,也无法到达web服务器;反向代理服务器后端还可以放置多台 web服务器,从而可以减轻网站压力,起到集群作用 我们都知道Nginx是一款非常不错的程序,其最大的优点就是能承载高并发连接,这次我们就用Nginx来做一台反向代理服务器 环境描述:反向代理服务器为Linux系统,安装有Nginx;web服务器为windows 系统,装有IIS 目标:客户端在访问192.168.1.20的时候得到的内容必须是192.168.1.10这台web服务器上的内容

Nginx高级配置

Nginx高级配置 1. Nginx连接后端的方式:反向代理(proxy_pass)、直连 fastcgi(fastcgi_pass) 例子: fastcgi_pass backend1; proxy_pass http://backend2; location块中配置此项,表示用反向代理或直连fastcgi的方式连接后端服务,其中backend1、backend2为upstream配置,其中配置下游的ip&port列表和调度参数,见下文。 注意:fastcgi_pass与proxy_pass是互斥配置,不能同时生效。 2. Nginx调度与负载均衡配置(upstream 配置) 1) 轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器。weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认值为1。 例如: upstreambakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 2) ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如: upstreambakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; } 3) hash 每个请求按访问$hash_seed的hash结果分配。 例如: upstreambakend { hash $hash_seed; server 192.168.0.14:88; server 192.168.0.15:80;

在Linux虚拟机中搭建Nginx服务器以及SSL、反向代理和负载均衡的实现

在Linux虚拟机中搭建Nginx服务器以及SSL、反向代理和负载均衡的实现 目录 一、虚拟机下网络的网络配置 (2)

1、Bridged模式 (2) 2、NAT 模式 (3) 3、host-only 模式: (4) 4、作业环境网络拓扑图 (4) 二、Nginx的安装与配置 (5) 1、Nginx简介 (5) 2、安装前的环境准备 (5) 3、下载安装 (6) 4、控制Nginx服务 (6) 5、配置nginx (7) 6、负载测试 (9) 三、基于OpenSSL部署https网站 (9) 1、OpenSSL以及SSL/TLS协议简介: (9) 2、Linux下配置https (10) 3、SSL/TSL协议分析 (12) 四、用Nginx实现负载均衡和反向代理 (15) 1、反向代理的实现 (15) 2、负载均衡 (18) 一、虚拟机下网络的网络配置 1、Bridged模式 在桥接模式下,VMware虚拟机里的系统就像是局域网中的一台独立的主机,它可以访问同一个网段内任何一台机器,即可以相互ping通。

在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,就可以手工配置它的IP,DNS服务器,网关等信息,以实现通过局域网的网关或通过交换机访问外网。 图1 本地物理网卡和虚拟网卡通过虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位。 Vmware默认给虚拟系统提供了一个虚拟网卡(linux下默认为eth0设备),虚拟系统通过该网卡与外部通信。图中虚拟交换机由vmware提供,其默认设备名为VMnet0。如图1所示。 2、NAT 模式 NAT 即Network Address Translation 缩写,即网络地址转换,由NAT服务完成,在vmware里默认为VMnet8虚拟交换机,它将虚拟系统的IP地址转换成宿主机的IP地址,从而借用宿主机访问其他主机。使用NAT模式,也可以让虚拟系统通过宿主机器所在的网络来访问公网。 在这种模式下,虚拟系统是不能被LAN内其他PC访问的(宿主机可以,稍后讲),只能虚拟机以宿主机的名义访问LAN内的计算机。默认情况下NAT模式的虚拟系统的TCP/IP 配置信息由VMnet8(NAT)虚拟网络的DHCP服务器提供,因此采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。 图2 VMware Network Adepter VMnet8虚拟网卡的作用就是为主机和虚拟机的通信提供一个接口,即使主机关闭该网卡,虚拟机仍然可以连接到Internet,但是主机和虚拟机之间就不能互访了,还有访问局域网内的其他计算机,也是通过NAT服务实现。如图2所示

[全]Nginx配置文件上下文结构

Nginx配置文件上下文结构 1.Nginx配置文件上下文结构个Nginx的功能模块包含 系列的命令(cmd)以及与命令对应的处理函数(cmd→handler)。而Nginx 根据配置文件中的配 置指令就知道对应到哪个模块的哪个命令,然后调用命令对应的处理函数来处理。 一个Nginx配置文件包含若干配置项,每个配置项由配置指令和指令参数两部分组成,3个简单的Nginx配置项 Nginx配置文件中的配置指令如果包含空格,就需要用单引号或双引号引起来。指令参数如果 是由简单的字符串构成的,简单配置项就需要以分号结束;指令参数如果是复杂的多行字符串, 配置项就需要用花括号“{}”括起来。 Nginx配置项的具体功能与其所处的作用域(上下文、配置块)是强相关的。Nginx指令的作 用域配置块大致有5种,它们之间的层次关系。

5种Nginx指令的作用和它们之间的层次关系一个标准的Nginx配置文件的上下文结构如 下:

... #main全局配置块,例如工作进程数 events { #events事件处理模式配置块,例如IO读写模式、连接数等... } http #HTTP协议配置块 { ... #HTTP协议的全局配置块

server #server虚拟服务器配置块 一 { ... #server全局块location [PATTERN] #location路由规则配置块一 { ... } location [PATTERN] #location路由规则配置块二 { ... } } server #server虚拟服务器配置块二 { ...

Nginx安装及简单配置反向代理

Nginx安装及简单配置反向代理一.环境 VMware: Redhat(Server_A 部署nginx文件服务页面) WinServer(Server_B 部署IIS) Redhat(nginx代理服务器) 源码包: nginx-1.5.3.tar.gz openssl-1.0.1c.tar.gz (提供ssl加密协议) pcre-8.33.tar.gz (http rewrite模块:地址重写) zlib-1.2.8.tar.gz (gzip模块,传输数据打包)拓扑结构: 二.安装 1.安装基础编译环境 yum install -y gcc gcc-c++ make 2.安装

2.1解压 cd /tmp/soft/ tar xzfv nginx-1.5.3.tar.gz cd .. tar xzfv openssl-1.0.1c.tar.gz cd .. tar xzfv pcre-8.33.tar.gz cd .. tar xzfv zlib-1.2.8.tar.gz 2.2安装依赖 cd/tmp/soft/pcre-8.33 ./configure make&&make install cd/tmp/soft/zlib-1.2.8 ./configure make&&make install cd/tmp/soft/openssl-1.0.1c ./configure make&&make install 2.3安装nginx cd/tmp/soft/nginx-1.5.3 ./configure --prefix=/home/nginx --with-http_stub_status _module --with-http_ssl_module ./configure –help #查看配置概述 make&&make install 3.yum安装依赖包:

Nginx 配置文件nginx.conf的完整配置说明

#用户用户组 user www www; #工作进程,根据硬件调整,有人说几核cpu,就配几个,我觉得可以多一点 worker_processes 5; #错误日志 error_log logs/error.log; #pid文件位置 pid logs/nginx.pid; worker_rlimit_nofile 8192; events { #工作进程的最大连接数量,根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行 worker_connections 4096; } http { include conf/mime.types; #反向代理配置,可以打开proxy.conf看看 include /etc/nginx/proxy.conf; #fastcgi配置,可以打开fastcgi.conf看看 include /etc/nginx/fastcgi.conf; default_type application/octet-stream; #日志的格式 log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #访问日志 access_log logs/access.log main; sendfile on; tcp_nopush on;

#根据实际情况调整,如果server很多,就调大一点 server_names_hash_bucket_size 128; # this seems to be required for some vhosts #这个例子是fastcgi的例子,如果用fastcgi就要仔细看 server { # php/fastcgi listen 80; #域名,可以有多个 server_name https://www.360docs.net/doc/374137698.html, https://www.360docs.net/doc/374137698.html,; #访问日志,和上面的级别不一样,应该是下级的覆盖上级的 access_log logs/domain1.access.log main; root html; location / { index index.html index.htm index.php; } #所有php后缀的,都通过fastcgi发送到1025端口上 #上面include的fastcgi.conf在此应该是有作用,如果你不include,那么就把fastcgi.conf的配置项放在这个下面。 location ~ .php$ { fastcgi_pass 127.0.0.1:1025; } } #这个是反向代理的例子 server { # simple reverse-proxy listen 80; server_name https://www.360docs.net/doc/374137698.html, https://www.360docs.net/doc/374137698.html,; access_log logs/domain2.access.log main; #静态文件,nginx自己处理 location ~ ^/(images|javascript|js|css|flash|media|static)/ {

Nginx配置文件(nginx.conf)配置详解

Nginx配置文件(nginx.conf)配置详解 usernginxnginx ; Nginx用户及组:用户组。window下不指定 worker_processes 8; 工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。 error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; 错误日志:存放路径。 pid logs/nginx.pid; pid(进程标识符):存放路径。 worker_rlimit_nofile 204800; 指定进程可以打开的最大描述符:数目。 这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。 现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。 这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。 events { useepoll; 使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。 补充说明: 与apache相类,nginx针对不同的操作系统,有不同的事件模型 A)标准事件模型 Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll B)高效事件模型 Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X 系统使用kqueue可能会造成内核崩溃。 Epoll:使用于Linux内核2.6版本及以后的系统。 /dev/poll:使用于Solaris 7 11/99+,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。Eventport:使用于Solaris 10。为了防止出现内核崩溃的问题,有必要安装安全补丁。 worker_connections 204800; 没个工作进程的最大连接数量。根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。 worker_processes*worker_connections

Nginx代理操作手册

1Nginx的作用 Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。 nginx在1.9版本之后可以充当端口转发的作用,即:访问该服务器的指定端口,nginx就可以充当端口转发的作用将流量导向另一个服务器,同时获取目标服务器的返回数据并返回给请求者。nginx的TCP代理功能跟nginx的反向代理不同的是:请求该端口的所有流量都会转发到目标服务器,而在反向代理中可以细化哪些请求分发给哪些服务器;另一个不同的是,nginx做TCP代理并不仅仅局限于WEB的URL请求,还可以转发如memcached、MySQL等点到点的请求 2Nginx的安装 2.1在线安装 下载Nginx及相关组件 进入用户目录下载程序 下载相关组件 [root@localhost src]# wget https://www.360docs.net/doc/374137698.html,/download/nginx-1.10.2.tar.gz 省略安装内容... [root@localhost src]# wget

https://www.360docs.net/doc/374137698.html,/source/openssl-fips-2.0.10.tar.gz 省略安装内容... [root@localhost src]# wget https://www.360docs.net/doc/374137698.html,/zlib-1.2.11.tar.gz 省略安装内容... [root@localhost src]# wget ftp://https://www.360docs.net/doc/374137698.html,/pub/software/programming/pcre/pcre-8.40.tar.gz 省略安装内容... 安装c++编译环境,如已安装可略过 [root@localhost src]# yum install gcc-c++ 省略安装内容... 期间会有确认提示输入y回车 Is this ok [y/N]:y 省略安装内容... 安装Nginx及相关组件 openssl安装 [root@localhost src]# tar zxvf openssl-fips-2.0.10.tar.gz 省略安装内容... [root@localhost src]# cd openssl-fips-2.0.10 [root@localhost openssl-fips-2.0.10]# ./config && make && make install 省略安装内容... pcre安装 [root@localhost src]# tar zxvf pcre-8.40.tar.gz

Nginx负载均衡的详细配置及使用案例详解

Nginx负载均衡的详细配置及使用案例详解. 技术无止境, 我们仍需努力! 1,话不多说, 这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。 针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。 2, 负载均衡的种类 1)一种是通过硬件来进行解决,常见的硬件有NetScaler、F5、Radware 和Array等商用的负载均衡器,但是它们是比较昂贵的 2)一种是通过软件来进行解决的,常见的软件有LVS、Nginx、apache 等,它们是基于Linux系统并且开源的负载均衡策略.

3, 这里我们只来说Nginx(其他的大家有兴趣可以自行查阅相关文档) Nginx(发音同engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·西索夫)所开发,供俄国大型的入口网站及搜索引擎Rambler(漫步者)(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。 优点: 1:可运行linux,并有 Windows 移植版。 2:在高连接并发的情况下,Nginx是Apache服务器不错的替代品Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达50,000 个并发连接数的响应 4, 创建两台Nginx服务器 由于自己在自己电脑上搭建, 所以现在只模拟搭建两台Nginx服务器. 负载均衡的功能: 转发 故障移除

Nginx反向代理服务器配置基础教程

Nginx反向代理服务器配置教程一,系统架构 二,Nginx安装 系统环境与组件: Centos 6.6 x64 nginx v1.92 gcc openssl-devel pcre-devel libevent 1,更换国内源 1)、下载新源及将本地源备份 # cd /etc/yum.repos.d/ # wget https://www.360docs.net/doc/374137698.html,/.help/CentOS6-Base-163.repo # mv CentOS-Base.repo CentOS-Base.repo.backup # mv CentOS6-Base-163.repo CentOS-Base.repo

2)、yum源更新 # yum clean all && yum makecache && yum update -y 3)、完成 2,安装依赖包 1) # yum -y install gcc # yum -y install openssl openssl-devel # yum -y install pcre-devel 检查安装结果命令: # rpm -qa |grep gcc 2)安装libevent libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。官网下载地址:https://www.360docs.net/doc/374137698.html,/ 安装步骤: # cd ~ #进入用户主目录,软件包都保存在这里。 # wget https://www.360docs.net/doc/374137698.html,/project/levent/libevent/libevent-2.1/libevent-2.1.4-alpha.tar.gz # tar –xvf libevent-2.1.4-alpha.tar.gz # cd libevent-2.1.4-alpha # ./configure # make # make install 3,相关用户及目录建立 1)建立运行nginx的用户与用户组 # groupadd -r nginx # useradd -r -g nginx -s /bin/false -M nginx 2)建立安装nginx要用到的临时文件目录 #mkdir -p/var/tmp/nginx/proxy 4,Nginx安装 1)下载nginx-1.9.2.tar.gz,上传至/root目录。 # cd ~ # tar –xvf nginx-1.9.2.tar.gz # cd nginx-1.9.2

如何验证nginx配置文件是否正确

资源分享编程语言web前端web服务器操作系统数据库应用0 柳明的博客 资源在于分享,技术在于交流 上午好! 2013年3月21日 星期四手机号: 归属地: 运营商、地区面 值: 100元 50元 其他 30元售 价: 98元-99.6元手机充值现在的位置: 首页 > web服务器 > nginx > 正文 RSS 小 中 大 上篇 下篇 如何验证nginx配置文件是否正确 2012年11月28日 ? nginx , web服务器 ? 共 3904字 ? 暂无评论 ? 被围观 1,840 views+ 当我们进行nginx 配置文件的时候如何才能检测我们做的是否正确呢?其实很简单,下面就向大家介 绍有关nginx 配置文件正确与否的检测方法。希望大家在以后的使用中有所收获。 检测nginx配置文件是否正确: 1. /usr/local/nginx/sbin/nginx -t -c nginx.conf 2. -c 配置文件路径 3. -g Set global directives. (version >=0.7.4)

4. -t 检测文件是否正确不执行 5. -v Print version. 6. -V Print nginx version, compiler version and configure 7. parameters. 编译时如果使用了–with-debug编译,还可以使用error_log file [ debug_core| debug_http | debug_event …] 来获得debug信息 通过信号对 Nginx配置文件 进行控制,Nginx配置文件 支持下表中的信号: 信号名 作用描述 TERM, INT 快速关闭程序,中止当前正在处理的请求 QUIT 处理完当前请求后,关闭程序 HUP 重新加载配置,并开启新的工作进程,关闭就的进程,此操作不会中断请求 USR1 重新打开日志文件,用于切换日志,例如每天生成一个新的日志文件 USR2 平滑升级可执行程序 WINCH 从容关闭工作进程 有两种方式来通过这些信号去控制 Nginx配置文件,第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID,通过 kill – XXX来控制 Nginx,其中 XXX 就是上表中列出的信号名。如果您的系统中只有一个 Nginx 进程,那您也可以通过 killall 命令来完成,例如运行 killall – s HUP nginx 来让 Nginx 重新加载配置。 配置: 1. use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; 2. FreeBSD使用kqueue,Linux选epoll. 3. worker_connections number 每个worker的最大连接数 4. Maxclient = work_processes * worker_connections

nginx配置详解

Nginx配置文件nginx.conf中文详解(总结) 2012-12-16 14:56:38 我来说两句 收藏我要投稿 PS:Nginx使用有两三年了,现在经常碰到有新用户问一些很基本的问题,我也没时间一一回答,今天下午花了点时间,结合自己的使用经验,把Nginx的主要配置参数说明分享一下,也参考了一些网络的内容,这篇是目前最完整的Nginx配置参数中文说明了。更详细的模块参数请参考:https://www.360docs.net/doc/374137698.html,/Main #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log ar/loginx/error.log info; #进程文件 pid ar/runinx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n 的值保持一致。 worker_rlimit_nofile 65535; #工作模式与连接数上限 events { #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll 模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。 use epoll; #单个进程最大连接数(最大连接数=连接数*进程数)

nginx反向代理批量实现https协议访问

nginx反向代理批量实现https协议访问 来源:转载 我们进入大多数HTTPS网站ie浏览器都会给出相关提醒了,但我配置了一台HTTPS代理机器发现css与js都加载不了,这个有朋友说是https页面,如果加载http协议的内容,会被认为页面不安全,所以就会弹出提醒框了。 HTTPS是什么 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。htt ps:URL表明它使用了HTTP,但HTTPS 存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面 解决办法 sever{ listen 80; sever_name www.你的域名.net; root /home/webroot/www/; index index.php index.html; # ... } sever{ listen 80; sever_nameimg.你的域名.net; root /home/webroot/img/; index index.php index.html; # ... } sever{

listen 80; sever_name static.你的域名.net; root /home/webroot/static/; index index.php index.html; # ... } sever{ listen 80; sever_name upload.你的域名.net; root /home/webroot/upload/; index index.php index.html; # ... } server { listen 443; server_name www.你的域名.net img.你的域名.net static.你的域名.net upload.你的域名.net; ssl on; ssl_certificate /usr/local/nginx/conf/你的域名.net.crt; ssl_certificate_key /usr/local/nginx/conf/你的域名.net.key; location /{ proxy_pass http://127.0.0.1:80; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header SSL '1'; proxy_redirect http:// https://; } } 这样配置好,访问:

nginx反向代理配置

nginx反向代理配置 前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反向代理apache.整个配置安装过程很简单.在考虑高并发的情况下,在安装前就做了些优化.目前配置能抗住3000以上并发.好像不是特别大哦?呵~~ 但足以~~ 只是还有少量499问题..期待有人跟我讨论解决 第1部分:安装 1 建立用户及组 /usr/sbin/groupadd www /usr/sbin/useradd -g www www 2 安装pcre 让nginx支持rewrite 方便以后所需 wget ftp://https://www.360docs.net/doc/374137698.html,/pub/software/programming/pcre/pcre-7.8.tar.gz tar zxvf pcre-7.8.tar.gz cd pcre-7.8/ ./configure make && make install 3 安装nginx wget http://sysoev.ru/nginx/nginx-0.7.58.tar.gz tar zxvf nginx-0.7.58.tar.gz cd nginx-0.7.58/ ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --wi th-http_stub_status_module --with-http_ssl_module --with-cc-opt='-O2' --with-c pu-opt=opteron make && make install #注意上文中的--with-cc-opt='-O2' --with-cpu-opt=opteron 这是编译器优化,目前最常用的是-02 而不是3.后面对应CPU的型号,可参照:http://wiki.gentoo.tw/index.php/HO WTO_CFLAG 第2部分:配置及优化配置文件 1 nginx.conf 配置文件: user www www; worker_processes 4; # [ debug | info | notice | warn | error | crit ] error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; pid /usr/local/webserver/nginx/nginx.pid;

Nginx反向代理和前端全缓存相关配置教程

Nginx反向代理和前端全缓存相关配置教程 最近一直在研究这方面的配置,只是脚本比较复杂。在网上用力找了几天,主要教程还是那些东西。并且有点乱七八糟,笔者进行了一些整理。告诉你最简单的方法,来实现这二个方面的内容: 1.nginx最简单的反向代理脚本 2.nginx最简单的前端缓存反向代理脚本 3.只提供简单应用,自动更新等操作不讲解 4.最简单的脚本,容易学会到渣 切记:配置完成后,需要刷新nginx配置,以下2条命令都可以: /root/lnmp reload /etc/init.d/nginx reload 一、最简单的反向代理脚本(只要修改2个网址,存成conf文件放置于vhost 下): server { listen 80; server_name https://www.360docs.net/doc/374137698.html,; location / { proxy_pass /; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 二、最简单的前端全缓存,反向代理脚本 #新建2个目录,放置缓存文件: mkdir /home/cache/path -p mkdir /home/cache/temp -p 修改/usr/local/nginx/conf/nginx.conf 新增以下代码,主要是缓存相关设置,请放置于http{ ##这里} 中,一般加在log_format 上面或下面均可: client_body_buffer_size 512k; 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; proxy_temp_path /home/cache/temp; proxy_cache_path /home/cache/path levels=1:2 keys_zone=cache_one:500m inactive=7d max_size=30g; #500m是内存占用,7d是7天无访问删除,30g是缓存占具硬盘空间 以下为虚拟主机配置文件,可另存成.conf 放置于vhost 下面:

相关文档
最新文档