首发于 学习进阶中

VSFTPD Nginx

VSFTPD

FTP 服务器

FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。

用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。

基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传

输文件。

在 FTP 的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。

"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计

算机中拷贝至远程主机上。用 Internet 语言来说,用户可通过客户机程序向(从)远程主机

上传(下载)文件

VSFTPD 简介

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd

是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、

HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的

FTP 服务器所不支持的特征。

项目中图片服务器

单体架构中的图片管理

在传统的单体架构项目中,可以在 web 项目中添加一个文件夹,来存放上传的图片。

例如在工程的根目录 WebRoot 下创建一个 images 文件夹用于保存已上传的图片。

优点:使用方便,便于管理

缺点:

1、如果是分布式环境中图片引用会出现问题。

2、图片的下载会给服务器增加额外的压力

单体架构图片存储架构图

传统图片管理方式在分布式环境中的问题:

分布式环境的图片管理

安装 VSFTP

1 安装 vsftpd 组件

yum -y install vsftpd

安装完后,有/etc/vsftpd/vsftpd.conf 文件,是 vsftp 的配置文件。

2 添加一个 Linux 用户

此用户就是用来登录 ftp 服务器用的。

useradd ftpuser

这样一个用户建完,可以用这个登录。登录后默认的路径为 /home/ftpuser.

3 给用户添加密码。

passwd ftpuser

输入两次密码后修改密码。

4 防火墙开启 21 端口

因为 ftp 默认的端口为 21,而 centos 默认是没有开启的,所以要修改 iptables 文件

vim /etc/sysconfig/iptables

在行上面有 22 -j ACCEPT 下面另起一行输入跟那行差不多的,只是把 22 换成 21,然后:

wq 保存。

还要运行下,重启 iptables

service iptables restart

5 修改 selinux

外网是可以访问上去了,可是发现没法返回目录(使用 ftp 的主动模式,被动模式还是无法

访问),也上传不了,因为 selinux 作怪了。

修改 selinux:

执行以下命令查看状态:

[root@bogon ~]# getsebool -a | grep ftp

allow_ftpd_anon_write --> off

allow_ftpd_full_access --> off

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> off

ftpd_connect_db --> off

ftpd_use_passive_mode --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

[root@bogon ~]#

执行上面命令,再返回的结果看到两行都是 off,代表,没有开启外网的访问

[root@bogon ~]# setsebool -P allow_ftpd_full_access on

[root@bogon ~]# setsebool -P ftp_home_dir on

6 关闭匿名访问

修改/etc/vsftpd/vsftpd.conf 文件:

重启 ftp 服务:

service vsftpd restart

设置开机启动 vsftpd ftp 服务

chkconfig vsftpd on

图片上传

使用 FileZilla 上传图片

使用 FTP 协议访问图片服务器

FTP 协议的 URL 格式

ftp://username:userpassword@IP/路径/图片名称

在 VSFTPD 的插件中。不允许这样访问。必须要有登录环节。

FTPClient 工具 FTPClient 介绍

FTPClient 是 Apache 提供的一个开源的基于 JAVA 语言的 FTP 客户端工具。

FTPClient 位于 Apache 的 commons-net 项目中。

KindEditor 简介

KindEditor 是一套开源的 HTML 可视化编辑器,主要用于让用户在网站上获得所见即

所得编辑效果,兼容 IE、Firefox、Chrome、Safari、Opera 等主流浏览器。

KindEditor 使用 JavaScript 编写,可以无缝的于 Java、.NET、PHP、ASP 等程序接合。

KindEditor 非常适合在 CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用,

2006 年 7 月首次发布 2.0 以来,KindEditor 依靠出色的用户体验和领先的技术不断扩大编

辑器市场占有率,目前在国内已经成为最受欢迎的编辑器之一。

官网: http://kindeditor.net

基于 KindEditor 实现图片上传

创建 parent 项目

POM 文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.sxt</groupId>
	<artifactId>parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<!-- 对依赖的jar包的版本统一进行定义 -->
	<properties>
		<junit.version>4.12</junit.version>
		<spring.version>4.1.3.RELEASE</spring.version>
		<mybatis.version>3.2.8</mybatis.version>
		<mybatis.spring.version>1.2.2</mybatis.spring.version>
		<mysql.version>5.1.32</mysql.version>
		<slf4j.version>1.6.4</slf4j.version>
		<druid.version>1.0.9</druid.version>
		<jstl.version>1.2</jstl.version>
		<servlet-api.version>2.5</servlet-api.version>
		<tomcat.version>2.2</tomcat.version>
		<jsp-api.version>2.0</jsp-api.version>
		<zkClient-version>0.10</zkClient-version>
		<dubbo-version>2.5.4</dubbo-version>
		<jackson.version>2.4.2</jackson.version>
		<commons-net.version>3.3</commons-net.version>
		<commons-fileupload.version>1.3.1</commons-fileupload.version>
	</properties>


	<!-- jar包的依赖注入 ,由于该工程是一个父工程,所以jar包在该pom文件中只是声明 -->
	<dependencyManagement>
		<dependencies>
			<!-- 单元测试 -->
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit.version}</version>
			</dependency>
			<!-- 日志处理 -->
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<!-- Mybatis -->
			<dependency>
				<groupId>org.mybatis</groupId>
				<artifactId>mybatis</artifactId>
				<version>${mybatis.version}</version>
			</dependency>
			<dependency>
				<groupId>org.mybatis</groupId>
				<artifactId>mybatis-spring</artifactId>
				<version>${mybatis.spring.version}</version>
			</dependency>
			<!-- MySql -->
			<dependency>
				<groupId>mysql</groupId>
				<artifactId>mysql-connector-java</artifactId>
				<version>${mysql.version}</version>
			</dependency>
			<!-- 连接池 -->
			<dependency>
				<groupId>com.alibaba</groupId>
				<artifactId>druid</artifactId>
				<version>${druid.version}</version>
			</dependency>
			<!-- Spring -->
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-context</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-beans</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-webmvc</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-jdbc</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-aspects</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<!-- JSP相关 -->
			<dependency>
				<groupId>jstl</groupId>
				<artifactId>jstl</artifactId>
				<version>${jstl.version}</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>servlet-api</artifactId>
				<version>${servlet-api.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>jsp-api</artifactId>
				<version>${jsp-api.version}</version>
				<scope>provided</scope>
			</dependency>
			<!-- 文件上传组件 -->
			<dependency>
				<groupId>commons-fileupload</groupId>
				<artifactId>commons-fileupload</artifactId>
				<version>${commons-fileupload.version}</version>
			</dependency>
			
			<dependency>
				<groupId>commons-net</groupId>
				<artifactId>commons-net</artifactId>
				<version>${commons-net.version}</version>
			</dependency>
			
			<!-- Jackson Json处理工具包 -->
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-databind</artifactId>
				<version>${jackson.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<resources>
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.xml</include>
					<include>**/*.properties</include>
				</includes>
			</resource>
		</resources>
		<!-- tomcat插件,由于子项目不一定每个都是web项目,所以该插件只是声明,并未开启 -->
		<pluginManagement>
			<plugins>
				<!-- 配置Tomcat插件 -->
				<plugin>
					<groupId>org.apache.tomcat.maven</groupId>
					<artifactId>tomcat7-maven-plugin</artifactId>
					<version>${tomcat.version}</version>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>

创建 kindEditorDemo

修改 POM 文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.sxt</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>com.sxt</groupId>
  <artifactId>kindEditorDemo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <dependencies>
  	<!-- 单元测试 -->
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
			</dependency>
			<!-- 日志处理 -->
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-context</artifactId>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-beans</artifactId>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-webmvc</artifactId>
			</dependency>
			
			<!-- JSP相关 -->
			<dependency>
				<groupId>jstl</groupId>
				<artifactId>jstl</artifactId>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>servlet-api</artifactId>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>jsp-api</artifactId>
				<scope>provided</scope>
			</dependency>
			<!-- 文件上传组件 -->
			<dependency>
				<groupId>commons-fileupload</groupId>
				<artifactId>commons-fileupload</artifactId>
			</dependency>
			
			<dependency>
				<groupId>commons-net</groupId>
				<artifactId>commons-net</artifactId>
			</dependency>
			
			<!-- Jackson Json处理工具包 -->
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-databind</artifactId>
			</dependency>
  </dependencies>
  
  <build>
  			<plugins>
				<!-- 配置Tomcat插件 -->
				<plugin>
					<groupId>org.apache.tomcat.maven</groupId>
					<artifactId>tomcat7-maven-plugin</artifactId>
					<configuration>
						<path>/</path>
						<port>8080</port>
					</configuration>
				</plugin>
			</plugins>
  </build>
</project>

框架整合

Web.xml

springmvc.xml

applicationContext-service.xml

resource.properties

KindEditor 使用方式

自定义工具类介绍

FtpUtil:FTPClient 工具类

IDUtils:生成一切 ID 的策略的工具类。可以使用他生成图片名称

JsonUtils:对象与 json 格式转换的工具类

在 JSP 中使用 KindEditor

使用步骤

.1 在项目中添加 KindEditor 与 Jquery 的 js 文件

.2 在 JSP 页面中通过 script 标签引入 js

.3 在 JSP 中添加 textarea 标签

.4 调用 KindEditor 的 API 将 KindEditor 渲染到 textarea

KindEditor 初始化参数介绍

1 uploadJson:指定上传文件的服务器端程序

.2 FilePostName:指定上传文件 form 名称。

.3 dir:指定上传文件类型

实现图片上传

PicUploadController

PicUploadService

PicUploadServiceImpl

package com.sxt.service.impl;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.sxt.commons.FtpUtil;
import com.sxt.commons.IDUtils;
import com.sxt.service.PicUploadService;
@Service
public class PicUploadServiceImpl implements PicUploadService {

	@Value("${FTP_HOST}")
	private String FTP_HOST;
	@Value("${FTP_PORT}")
	private int FTP_PORT;
	@Value("${FTP_USERNAME}")
	private String FTP_USERNAME;
	@Value("${FTP_PASSWORD}")
	private String FTP_PASSWORD;
	@Value("${FTP_BASEPATH}")
	private String FTP_BASEPATH;
	@Value("${HTTP_BASE_PATH}")
	private String HTTP_BASE_PATH;
	
	@Override
	public Map<String, Object> fileUpload(MultipartFile filename) {
		Map<String, Object> map = new HashMap<String, Object>();
		Date date = new Date();
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
			String path = sdf.format(date);
			String newFileName = IDUtils.genImageName()+filename.getOriginalFilename().substring(filename.getOriginalFilename().lastIndexOf("."));
			boolean flag = FtpUtil.uploadFile(this.FTP_HOST, this.FTP_PORT, this.FTP_USERNAME, this.FTP_PASSWORD, this.FTP_BASEPATH, path, newFileName, filename.getInputStream());
			if (flag) {
				map.put("error", 0);
				map.put("url", this.HTTP_BASE_PATH+path+newFileName);
			} else {
				map.put("error", 1);
				map.put("msg", "上传失败!");
			}
		} catch (IOException e) {
			map.put("error", 1);
			map.put("msg", "上传失败!");
			e.printStackTrace();
		}
		return map;
	}
}

提交 KindEditor 中的数据

在 KindEditor 中提交方式需要使用 Ajax 方式提交。

需要使用 KindEditor 的一个 sync()的方法将数据同步到

textarea

jsp 页面

Nginx

Nginx 简介

Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务。Nginx 是由伊戈尔·赛索耶夫

为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开发的,第一个公开版本 0.1.0

发布于 2004 年 10 月 4 日。

Nginx 是一个很强大的高性能 Web 和反向代理服务,它具有很多非常优越的特性:在

连接高并发的情况下,Nginx 是 Apache 服务不错的替代品:Nginx 在美国是做虚拟主机生

意的老板们经常选择的软件平台之一。

Nginx 作用

1http 协议代理

2搭建虚拟主机

3服务的反向代理

4在反向代理中配置集群的负载均衡

代理方式

正向代理

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从

原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原

始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理

反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然

后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连

接的客户端,此时代理服务器对外就表现为一个反向代理服务器

二者之间的区别 (面试题)

位置不同

正向代理,架设在客户机和目标主机之间;

反向代理,架设在服务器端;

代理对象不同

正向代理,代理客户端,服务端不知道实际发起请求的客户端;

反向代理,代理服务端,客户端不知道实际提供服务的服务端

安装 Nginx

将 Nginx 安装包上传到 Linux 中

使用的 Nginx 版本为 nginx-1.8.0.tar.gz

nginx 安装环境

nginx 是 C 语言开发,建议在 linux 上运行,本视频使用 Centos6.5 作为安装环境。

◼ gcc

安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc

环境,需要安装 gcc:yum install gcc-c++

◼ PCRE

PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表

达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。

yum install -y pcre pcre-devel

注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。

◼ zlib

zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,

所以需要在 linux 上安装 zlib 库。

yum install -y zlib zlib-devel

openssl

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥

和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。

nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在

linux 安装 openssl 库。

yum install -y openssl openssl-devel

编译安装

解压:tar -zxvf nginx-1.8.0.tar.gz

进入到 nginx 的根目录

cd nginx-1.8.0

配置安装参数

./configure

参数设置如下:

./configure \

--prefix=/usr/local/nginx \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/temp/nginx/client \

--http-proxy-temp-path=/var/temp/nginx/proxy \

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

--http-scgi-temp-path=/var/temp/nginx/scgi

注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var 下创建 temp 及 nginx

目录

编译安装

编译:make

编译安装 make install

操作 Nginx

启动 nginx

cd /usr/local/nginx/sbin/

./nginx

注意:执行./nginx 启动 nginx,这里可以-c 指定加载的 nginx 配置文件,如下:

./nginx -c /usr/local/nginx/conf/nginx.conf

如果不指定-c,nginx 在启动时默认加载 conf/nginx.conf 文件,此文件的地址也可以在

编译安装 nginx 时指定./configure 的参数(--conf-path= 指向配置文件(nginx.conf))

停止 nginx

方式 1,快速停止:

cd /usr/local/nginx/sbin

./nginx -s stop

此方式相当于先查出 nginx 进程 id 再使用 kill 命令强制杀掉进程。

方式 2,完整停止(建议使用):

cd /usr/local/nginx/sbin

./nginx -s quit

此方式停止步骤是待 nginx 进程处理任务完毕进行停止

重启 nginx

方式 1,先停止再启动(建议使用):

对 nginx 进行重启相当于先停止 nginx 再启动 nginx,即先执行停止命令再执行启动命

令。

如下:

./nginx -s quit

./nginx

方式 2,重新加载配置文件:

当 nginx 的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用-s reload

不用先停止 nginx 再启动 nginx 即可将配置信息在 nginx 中生效,如下:

./nginx -s reload

测试

nginx 安装成功,启动 nginx,即可访问虚拟机上的 nginx

Nginx 默认的是侦听 80 端口

Nginx 的使用

配置虚拟主机

虚拟主机介绍

虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主

机,每个虚拟主机可以独立对外提供 www 服务,这样就可以实现一台主机对外提供多个

web 服务,每个虚拟主机之间是独立的,互不影响的。

虚拟主机技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应

用于 HTTP(Hypertext Transfer Protocol,超文本传输协议)服务,将一台服务器的某项或

者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬

件资源。

Nginx 的虚拟主机配置方式

Nginx 支持三种类型的虚拟主机配置

1. 基于 IP 的虚拟主机

2. 基于端口的虚拟主机

3. 基于域名的虚拟主机

基于 IP 的虚拟主机配置方式

1 需求

一台 Linux 服务器绑定两个 ip:192.168.70.144、192.168.70.188

访问不同的 ip 请求不同的 html 目录,即:

访问 192.168.70.144 将访问“html144”目录下的 html 网页

访问 192.168.70.188 将访问“html188”目录下的 html 网页

2 创建 HTML 目录

3 Linux 绑定多 IP

Linux 操作系统允许绑定多 IP。使用 IP 别名的方式,在一块物理网卡上可以绑定多个

lP 地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于 IP 的虚拟主机。但是

在绑定多 IP 时需要将动态的 IP 分配方式修改为静态的指定 IP

将动态 IP 修改为静态 IP

cd /etc/sysconfig/network-scripts

IP 绑定

将/etc/sysconfig/network-scripts/ifcfg-eth0 文件复制一份,命名为

ifcfg-eth0:1

修改其中内容:

DEVICE=eth0:1

IPADDR=192.168.70.188

其他项不用修改

重启系统

修改 Nginx 的配置文件完成基于 IP 的虚拟主机配置

Nginx 的配置文件 nginx.conf

如上述配置文件所示,主要由 6 个部分组成:

main:用于进行 nginx 全局信息的配置

events:用于 nginx 工作模式的配置

http:用于进行 http 协议信息的一些配置

server:用于进行服务器访问信息的配置

location:用于进行访问路由的配置

upstream:用于进行负载均衡的配置

Nginx.conf

基于端口的虚拟主机配置方式

需求

Nginx 对提供 8080 与 9090 两个端口的监听服务

请求 8080 端口则访问 html8080 目录下的 index.html

请求 9090 端口则访问 html9090 目录下的 index.htm

创建 HTML 目录

修改 Nginx 的配置文件完成基于端口的虚拟主机配置

Nginx.conf

基于域名的虚拟主机配置方式

需求

两个域名指向同一个 nginx 服务器,用户访问不同的域名时显示不同的内容。

域名规划:

1, bjsxt.com

2, itbaizhan.cn

创建 HTML 目录

修改 windows 的 hosts 文件配置域名与 ip 的映射

文件路径:C:\Windows\System32\drivers\etc

修改 Nginx 的配置文件完成基于域名的虚拟主机配置

nginx.conf

Nginx 中配置服务的反向代理

需求

安装两个 tomcat 服务,通过 nginx 反向代理。

本案例中使用两台虚拟机演示。

tomcat 安装到 192.168.70.143 环境中。端口为 8080 与 9090

Nginx 安装在 192.168.70.144 环境中

安装环境

安装 tomcat

配置 tomcat

修改端口

修改首页内容

配置 Nginx 实现服务的反向代理

在反向代理中配置负载均衡

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展

网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵

活性和可用性。

负载均衡,英文名称为 Load Balance,其意思就是分摊到多个操作单元上

进行执行,例如 Web 服务器、FTP 服务器、企业关键应用服务器和其它关键任务

服务器等,从而共同完成工作任务。

Nginx 负载均衡策略

2.6.2.1 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后

端服务器 down 掉,能自动剔除。

2.6.2.2 指定权重

指定轮询几率,weight 和访问比率成正比,用于后端服务器

性能不均的情况。

upstream backserver {

server 192.168.0.14 weight=10;

server 192.168.0.15 weight=10;

}

IP 绑定 ip_hash

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访

问一个后端服务器,可以解决 session 的问题。

upstream backserver {

ip_hash;

server 192.168.0.14:88;

server 192.168.0.15:80;

}

需求

nginx 作为负载均衡服务器,用户请求先到达 nginx,再由 nginx 根据负载配置

将请求转发至 tomcat 服务器。

nginx 负载均衡服务器:192.168.70.144

tomcat1 服务器:192.168.70.143:8080

tomcat2 服务器:192.168.70.143:9090

Nginx 的集群配置

nginx.conf

http 协议代理

由于 ftp 服务器是基于 ftp 协议处理的。那么现在我想在外部访问该图片,是没有办法

访问的。他是不能处理 http 协议的。所以我们需要拥有一个能够处理 http 协议代理服务器。

其实就是使用了 Nginx 的虚拟主机的方式。

需求

使用 Nginx 的基于域名的虚拟主机的方式来完成在 KindEditor 中添加图片时的图片回

显处理。

nginx:192.168.70.144

VSFTPD:192.168.70.144

注意:nginx 与 VSFTPD 必须安装到同一个环境中

解决 KindEditorDemo 项目中图片回显的问题

1修改系统的 hosts 文件

修改项目的 resource.properties 文件

修改 nginx.conf

深圳SEO优化公司铁岭关键词排名包年推广驻马店模板网站建设报价池州SEO按天计费多少钱邯郸网站优化按天扣费公司西安网站优化排名推荐淮南百度竞价包年推广公司日照网站设计报价漯河seo芜湖模板制作多少钱清徐网页设计公司朝阳网站推广工具河源网络营销推荐文山网站关键词优化朝阳SEO按天收费多少钱太原网站优化烟台seo优化价格平凉如何制作网站多少钱赣州网络营销公司江门网站搭建哪家好漯河企业网站改版报价延边网络推广报价桂林网站搜索优化价格景德镇百度竞价包年推广公司衡阳营销型网站建设哪家好温州网站seo优化推荐株洲关键词按天扣费朝阳网站seo优化多少钱舟山优化公司阳江如何制作网站哪家好运城网页制作公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化