FTP 服務(wù)器

FTP 是 File Transfer Protocol(文件傳輸協(xié)議)的英文簡(jiǎn)稱,而中文簡(jiǎn)稱為“文傳協(xié)議”。

用于 Internet 上的控制文件的雙向傳輸。同時(shí),它也是一個(gè)應(yīng)用程序(Application)。

基于不同的" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > VSFTPD Nginx

VSFTPD Nginx

時(shí)間:2023-07-14 12:27:01 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-07-14 12:27:01 來源:網(wǎng)站運(yùn)營

VSFTPD Nginx:VSFTPD

FTP 服務(wù)器

FTP 是 File Transfer Protocol(文件傳輸協(xié)議)的英文簡(jiǎn)稱,而中文簡(jiǎn)稱為“文傳協(xié)議”。

用于 Internet 上的控制文件的雙向傳輸。同時(shí),它也是一個(gè)應(yīng)用程序(Application)。

基于不同的操作系統(tǒng)有不同的 FTP 應(yīng)用程序,而所有這些應(yīng)用程序都遵守同一種協(xié)議以傳

輸文件。

在 FTP 的使用當(dāng)中,用戶經(jīng)常遇到兩個(gè)概念:"下載"(Download)和"上傳"(Upload)。

"下載"文件就是從遠(yuǎn)程主機(jī)拷貝文件至自己的計(jì)算機(jī)上;"上傳"文件就是將文件從自己的計(jì)

算機(jī)中拷貝至遠(yuǎn)程主機(jī)上。用 Internet 語言來說,用戶可通過客戶機(jī)程序向(從)遠(yuǎn)程主機(jī)

上傳(下載)文件

VSFTPD 簡(jiǎn)介

vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個(gè)最大的特點(diǎn)。vsftpd

是一個(gè) UNIX 類操作系統(tǒng)上運(yùn)行的服務(wù)器的名字,它可以運(yùn)行在諸如 Linux、BSD、Solaris、

HP-UNIX 等系統(tǒng)上面,是一個(gè)完全免費(fèi)的、開放源代碼的 ftp 服務(wù)器軟件,支持很多其他的

FTP 服務(wù)器所不支持的特征。

項(xiàng)目中圖片服務(wù)器

單體架構(gòu)中的圖片管理

在傳統(tǒng)的單體架構(gòu)項(xiàng)目中,可以在 web 項(xiàng)目中添加一個(gè)文件夾,來存放上傳的圖片。

例如在工程的根目錄 WebRoot 下創(chuàng)建一個(gè) images 文件夾用于保存已上傳的圖片。

優(yōu)點(diǎn):使用方便,便于管理

缺點(diǎn):

1、如果是分布式環(huán)境中圖片引用會(huì)出現(xiàn)問題。

2、圖片的下載會(huì)給服務(wù)器增加額外的壓力

單體架構(gòu)圖片存儲(chǔ)架構(gòu)圖

傳統(tǒng)圖片管理方式在分布式環(huán)境中的問題:

分布式環(huán)境的圖片管理

安裝 VSFTP

1 安裝 vsftpd 組件

yum -y install vsftpd

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

2 添加一個(gè) Linux 用戶

此用戶就是用來登錄 ftp 服務(wù)器用的。

useradd ftpuser

這樣一個(gè)用戶建完,可以用這個(gè)登錄。登錄后默認(rèn)的路徑為 /home/ftpuser.

3 給用戶添加密碼。

passwd ftpuser

輸入兩次密碼后修改密碼。

4 防火墻開啟 21 端口

因?yàn)?ftp 默認(rèn)的端口為 21,而 centos 默認(rèn)是沒有開啟的,所以要修改 iptables 文件

vim /etc/sysconfig/iptables

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

wq 保存。

還要運(yùn)行下,重啟 iptables

service iptables restart

5 修改 selinux

外網(wǎng)是可以訪問上去了,可是發(fā)現(xiàn)沒法返回目錄(使用 ftp 的主動(dòng)模式,被動(dòng)模式還是無法

訪問),也上傳不了,因?yàn)?selinux 作怪了。

修改 selinux:

執(zhí)行以下命令查看狀態(tài):

[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 ~]#

執(zhí)行上面命令,再返回的結(jié)果看到兩行都是 off,代表,沒有開啟外網(wǎng)的訪問

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

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

6 關(guān)閉匿名訪問

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

重啟 ftp 服務(wù):

service vsftpd restart

設(shè)置開機(jī)啟動(dòng) vsftpd ftp 服務(wù)

chkconfig vsftpd on

圖片上傳

使用 FileZilla 上傳圖片

使用 FTP 協(xié)議訪問圖片服務(wù)器

FTP 協(xié)議的 URL 格式

ftp://username:userpassword@IP/路徑/圖片名稱

在 VSFTPD 的插件中。不允許這樣訪問。必須要有登錄環(huán)節(jié)。

FTPClient 工具 FTPClient 介紹

FTPClient 是 Apache 提供的一個(gè)開源的基于 JAVA 語言的 FTP 客戶端工具。

FTPClient 位于 Apache 的 commons-net 項(xiàng)目中。

KindEditor 簡(jiǎn)介

KindEditor 是一套開源的 HTML 可視化編輯器,主要用于讓用戶在網(wǎng)站上獲得所見即

所得編輯效果,兼容 IE、Firefox、Chrome、Safari、Opera 等主流瀏覽器。

KindEditor 使用 JavaScript 編寫,可以無縫的于 Java、.NET、PHP、ASP 等程序接合。

KindEditor 非常適合在 CMS、商城、論壇、博客、Wiki、電子郵件等互聯(lián)網(wǎng)應(yīng)用上使用,

2006 年 7 月首次發(fā)布 2.0 以來,KindEditor 依靠出色的用戶體驗(yàn)和領(lǐng)先的技術(shù)不斷擴(kuò)大編

輯器市場(chǎng)占有率,目前在國內(nèi)已經(jīng)成為最受歡迎的編輯器之一。

官網(wǎng):http://kindeditor.net

基于 KindEditor 實(shí)現(xiàn)圖片上傳

創(chuàng)建 parent 項(xiàng)目

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> <!-- 對(duì)依賴的jar包的版本統(tǒng)一進(jìn)行定義 --> <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包的依賴注入 ,由于該工程是一個(gè)父工程,所以jar包在該pom文件中只是聲明 --> <dependencyManagement> <dependencies> <!-- 單元測(cè)試 --> <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相關(guān) --> <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插件,由于子項(xiàng)目不一定每個(gè)都是web項(xiàng)目,所以該插件只是聲明,并未開啟 --> <pluginManagement> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>${tomcat.version}</version> </plugin> </plugins> </pluginManagement> </build></project>創(chuàng)建 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> <!-- 單元測(cè)試 --> <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相關(guān) --> <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

FTP_HOST=192.168.219.128FTP_PORT=21FTP_USERNAME=ftpuserFTP_PASSWORD=1234FTP_BASEPATH=/home/ftpuser/HTTP_BASE_PATH=http://img.bjsxt.comKindEditor 使用方式

自定義工具類介紹

FtpUtil:FTPClient 工具類

IDUtils:生成一切 ID 的策略的工具類??梢允褂盟蓤D片名稱

JsonUtils:對(duì)象與 json 格式轉(zhuǎn)換的工具類

在 JSP 中使用 KindEditor

使用步驟

.1 在項(xiàng)目中添加 KindEditor 與 Jquery 的 js 文件

.2 在 JSP 頁面中通過 script 標(biāo)簽引入 js

.3 在 JSP 中添加 textarea 標(biāo)簽

.4 調(diào)用 KindEditor 的 API 將 KindEditor 渲染到 textarea

KindEditor 初始化參數(shù)介紹

1 uploadJson:指定上傳文件的服務(wù)器端程序

.2 FilePostName:指定上傳文件 form 名稱。

.3 dir:指定上傳文件類型

實(shí)現(xiàn)圖片上傳

PicUploadController

package com.sxt.web.controller;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import com.sxt.commons.JsonUtils;import com.sxt.service.PicUploadService;@Controller@RequestMapping("/pic")public class PicUploadController { @Autowired PicUploadService picUploadService; @RequestMapping("/upload") @ResponseBody public String fileUpload(MultipartFile fileName){ Map<String, Object> map = picUploadService.fileUpload(fileName); return JsonUtils.objectToJson(map); }}PicUploadService

package com.sxt.service;import java.util.Map;import org.springframework.web.multipart.MultipartFile;public interface PicUploadService { Map<String ,Object> fileUpload(MultipartFile filename);}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;@Servicepublic 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 中的數(shù)據(jù)

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

需要使用 KindEditor 的一個(gè) sync()的方法將數(shù)據(jù)同步到

textarea

jsp 頁面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/javascript" src="js/kindeditor/kindeditor.js"></script><script type="text/javascript" src="ja/kindeditor/lang/zh_CN.js"></script><script type="text/javascript" src="js/jquery-1.7.2.js"></script> <script type="text/javascript"> $(function(){ var obj; KindEditor.ready(function(K) { obj = K.create('#test_id', { uploadJson : '/pic/upload', filePostName: 'fileName', dir: "image" }); }); $("#but").click(function(){ obj.sync(); $.post("/content/save",$("#myForm").serialize(),function(data){ if(data.status == 200){ alert("提交成功!"); }else{ alert("提交失敗!"); } }); }); }); </script></head><body> <form action="" id="myForm"> <textarea rows="20" cols="70" id="test_id" name="desc"></textarea> <input type="button" value="ok" id="but"/> </form></body></html>

Nginx

Nginx 簡(jiǎn)介

Nginx (engine x) 是一個(gè)高性能的 HTTP 和反向代理服務(wù)。Nginx 是由伊戈?duì)枴べ愃饕?

為俄羅斯訪問量第二的 http://Rambler.ru 站點(diǎn)(俄文:Рамблер)開發(fā)的,第一個(gè)公開版本 0.1.0

發(fā)布于 2004 年 10 月 4 日。

Nginx 是一個(gè)很強(qiáng)大的高性能 Web 和反向代理服務(wù),它具有很多非常優(yōu)越的特性:在

連接高并發(fā)的情況下,Nginx 是 Apache 服務(wù)不錯(cuò)的替代品:Nginx 在美國是做虛擬主機(jī)生

意的老板們經(jīng)常選擇的軟件平臺(tái)之一。

Nginx 作用

1http 協(xié)議代理

2搭建虛擬主機(jī)

3服務(wù)的反向代理

4在反向代理中配置集群的負(fù)載均衡

代理方式

正向代理

正向代理,意思是一個(gè)位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從

原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(原始服務(wù)器),然后代理向原

始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶端。客戶端才能使用正向代理

反向代理

反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受 internet 上的連接請(qǐng)求,然

后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給 internet 上請(qǐng)求連

接的客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)反向代理服務(wù)器

二者之間的區(qū)別 (面試題)

位置不同

正向代理,架設(shè)在客戶機(jī)和目標(biāo)主機(jī)之間;

反向代理,架設(shè)在服務(wù)器端;

代理對(duì)象不同

正向代理,代理客戶端,服務(wù)端不知道實(shí)際發(fā)起請(qǐng)求的客戶端;

反向代理,代理服務(wù)端,客戶端不知道實(shí)際提供服務(wù)的服務(wù)端

安裝 Nginx

將 Nginx 安裝包上傳到 Linux 中

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

nginx 安裝環(huán)境

nginx 是 C 語言開發(fā),建議在 linux 上運(yùn)行,本視頻使用 Centos6.5 作為安裝環(huán)境。

? gcc

安裝 nginx 需要先將官網(wǎng)下載的源碼進(jìn)行編譯,編譯依賴 gcc 環(huán)境,如果沒有 gcc

環(huán)境,需要安裝 gcc:yum install gcc-c++

? PCRE

PCRE(Perl Compatible Regular Expressions)是一個(gè) Perl 庫,包括 perl 兼容的正則表

達(dá)式庫。nginx 的 http 模塊使用 pcre 來解析正則表達(dá)式,所以需要在 linux 上安裝 pcre 庫。

yum install -y pcre pcre-devel

注:pcre-devel 是使用 pcre 開發(fā)的一個(gè)二次開發(fā)庫。nginx 也需要此庫。

? zlib

zlib庫提供了很多種壓縮和解壓縮的方式,nginx使用zlib對(duì)http包的內(nèi)容進(jìn)行g(shù)zip,

所以需要在 linux 上安裝 zlib 庫。

yum install -y zlib zlib-devel

openssl

OpenSSL 是一個(gè)強(qiáng)大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰

和證書封裝管理功能及 SSL 協(xié)議,并提供豐富的應(yīng)用程序供測(cè)試或其它目的使用。

nginx 不僅支持 http 協(xié)議,還支持 https(即在 ssl 協(xié)議上傳輸 http),所以需要在

linux 安裝 openssl 庫。

yum install -y openssl openssl-devel

編譯安裝

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

進(jìn)入到 nginx 的根目錄

cd nginx-1.8.0

配置安裝參數(shù)

./configure

參數(shù)設(shè)置如下:

./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

注意:上邊將臨時(shí)文件目錄指定為/var/temp/nginx,需要在/var 下創(chuàng)建 temp 及 nginx

目錄

編譯安裝

編譯:make

編譯安裝 make install

操作 Nginx

啟動(dòng) nginx

cd /usr/local/nginx/sbin/

./nginx

注意:執(zhí)行./nginx 啟動(dòng) nginx,這里可以-c 指定加載的 nginx 配置文件,如下:

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

如果不指定-c,nginx 在啟動(dòng)時(shí)默認(rèn)加載 conf/nginx.conf 文件,此文件的地址也可以在

編譯安裝 nginx 時(shí)指定./configure 的參數(shù)(--conf-path= 指向配置文件(nginx.conf))

停止 nginx

方式 1,快速停止:

cd /usr/local/nginx/sbin

./nginx -s stop

此方式相當(dāng)于先查出 nginx 進(jìn)程 id 再使用 kill 命令強(qiáng)制殺掉進(jìn)程。

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

cd /usr/local/nginx/sbin

./nginx -s quit

此方式停止步驟是待 nginx 進(jìn)程處理任務(wù)完畢進(jìn)行停止

重啟 nginx

方式 1,先停止再啟動(dòng)(建議使用):

對(duì) nginx 進(jìn)行重啟相當(dāng)于先停止 nginx 再啟動(dòng) nginx,即先執(zhí)行停止命令再執(zhí)行啟動(dòng)命

令。

如下:

./nginx -s quit

./nginx

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

當(dāng) nginx 的配置文件 nginx.conf 修改后,要想讓配置生效需要重啟 nginx,使用-s reload

不用先停止 nginx 再啟動(dòng) nginx 即可將配置信息在 nginx 中生效,如下:

./nginx -s reload

測(cè)試

nginx 安裝成功,啟動(dòng) nginx,即可訪問虛擬機(jī)上的 nginx

Nginx 默認(rèn)的是偵聽 80 端口

Nginx 的使用

配置虛擬主機(jī)

虛擬主機(jī)介紹

虛擬主機(jī)是一種特殊的軟硬件技術(shù),它可以將網(wǎng)絡(luò)上的每一臺(tái)計(jì)算機(jī)分成多個(gè)虛擬主

機(jī),每個(gè)虛擬主機(jī)可以獨(dú)立對(duì)外提供 www 服務(wù),這樣就可以實(shí)現(xiàn)一臺(tái)主機(jī)對(duì)外提供多個(gè)

web 服務(wù),每個(gè)虛擬主機(jī)之間是獨(dú)立的,互不影響的。

虛擬主機(jī)技術(shù)是互聯(lián)網(wǎng)服務(wù)器采用的節(jié)省服務(wù)器硬件成本的技術(shù),虛擬主機(jī)技術(shù)主要應(yīng)

用于 HTTP(Hypertext Transfer Protocol,超文本傳輸協(xié)議)服務(wù),將一臺(tái)服務(wù)器的某項(xiàng)或

者全部服務(wù)內(nèi)容邏輯劃分為多個(gè)服務(wù)單位,對(duì)外表現(xiàn)為多個(gè)服務(wù)器,從而充分利用服務(wù)器硬

件資源。

Nginx 的虛擬主機(jī)配置方式

Nginx 支持三種類型的虛擬主機(jī)配置

1. 基于 IP 的虛擬主機(jī)

2. 基于端口的虛擬主機(jī)

3. 基于域名的虛擬主機(jī)

基于 IP 的虛擬主機(jī)配置方式

1 需求

一臺(tái) Linux 服務(wù)器綁定兩個(gè) ip:192.168.70.144、192.168.70.188

訪問不同的 ip 請(qǐng)求不同的 html 目錄,即:

訪問 http://192.168.70.144 將訪問“html144”目錄下的 html 網(wǎng)頁

訪問 http://192.168.70.188 將訪問“html188”目錄下的 html 網(wǎng)頁

2 創(chuàng)建 HTML 目錄

3 Linux 綁定多 IP

Linux 操作系統(tǒng)允許綁定多 IP。使用 IP 別名的方式,在一塊物理網(wǎng)卡上可以綁定多個(gè)

lP 地址。這樣就能夠在使用單一網(wǎng)卡的同一個(gè)服務(wù)器上運(yùn)行多個(gè)基于 IP 的虛擬主機(jī)。但是

在綁定多 IP 時(shí)需要將動(dòng)態(tài)的 IP 分配方式修改為靜態(tài)的指定 IP

將動(dòng)態(tài) IP 修改為靜態(tài) IP

cd /etc/sysconfig/network-scripts

IPADDR=192.168.10.144 NETMASK=255.255.255.0 GATEWAY=192.168.10.2 DNS1=114.114.114.114 IP 綁定

將/etc/sysconfig/network-scripts/ifcfg-eth0 文件復(fù)制一份,命名為

ifcfg-eth0:1

修改其中內(nèi)容:

DEVICE=eth0:1

IPADDR=192.168.70.188

其他項(xiàng)不用修改

重啟系統(tǒng)

修改 Nginx 的配置文件完成基于 IP 的虛擬主機(jī)配置

Nginx 的配置文件 nginx.conf

如上述配置文件所示,主要由 6 個(gè)部分組成:

main:用于進(jìn)行 nginx 全局信息的配置

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

http:用于進(jìn)行 http 協(xié)議信息的一些配置

server:用于進(jìn)行服務(wù)器訪問信息的配置

location:用于進(jìn)行訪問路由的配置

upstream:用于進(jìn)行負(fù)載均衡的配置

Nginx.conf

user root;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on;#keepalive_timeout 0; keepalive_timeout 65; #gzip on; #一個(gè) Server 就是一個(gè)虛擬主機(jī) server { listen 80;#為虛擬機(jī)指定 IP 或者是域名 server_name 192.168.70.144;#主要配置路由訪問信息location / { #用于指定訪問根目錄時(shí),訪問虛擬主機(jī)的 web 目錄 root html144; #在不指定訪問具體資源時(shí),默認(rèn)的展示資源的列表 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }#一個(gè) Server 就是一個(gè)虛擬主機(jī) server { listen 80;#為虛擬機(jī)指定 IP 或者是域名 server_name 192.168.70.188;#主要配置路由訪問信息 location / { #用于指定訪問根目錄時(shí),訪問虛擬主機(jī)的 web 目錄 root html188; #在不指定訪問具體資源時(shí),默認(rèn)的展示資源的列表 index index.html index.htm; }error_page 500 502 503 504 /50x.html;location = /50x.html { root html; } }}基于端口的虛擬主機(jī)配置方式

需求

Nginx 對(duì)提供 8080 與 9090 兩個(gè)端口的監(jiān)聽服務(wù)

請(qǐng)求 8080 端口則訪問 html8080 目錄下的 index.html

請(qǐng)求 9090 端口則訪問 html9090 目錄下的 index.htm

創(chuàng)建 HTML 目錄

修改 Nginx 的配置文件完成基于端口的虛擬主機(jī)配置

Nginx.conf

基于域名的虛擬主機(jī)配置方式

需求

兩個(gè)域名指向同一個(gè) nginx 服務(wù)器,用戶訪問不同的域名時(shí)顯示不同的內(nèi)容。

域名規(guī)劃:

1, http://www.bjsxt.com

2, http://www.itbaizhan.cn

創(chuàng)建 HTML 目錄

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

文件路徑:C:/Windows/System32/drivers/etc

修改 Nginx 的配置文件完成基于域名的虛擬主機(jī)配置

nginx.conf

Nginx 中配置服務(wù)的反向代理

需求

安裝兩個(gè) tomcat 服務(wù),通過 nginx 反向代理。

本案例中使用兩臺(tái)虛擬機(jī)演示。

tomcat 安裝到 192.168.70.143 環(huán)境中。端口為 8080 與 9090

Nginx 安裝在 192.168.70.144 環(huán)境中

安裝環(huán)境

安裝 tomcat

配置 tomcat

修改端口

修改首頁內(nèi)容

配置 Nginx 實(shí)現(xiàn)服務(wù)的反向代理

在反向代理中配置負(fù)載均衡

負(fù)載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價(jià)有效透明的方法擴(kuò)展

網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈

活性和可用性。

負(fù)載均衡,英文名稱為 Load Balance,其意思就是分?jǐn)偟蕉鄠€(gè)操作單元上

進(jìn)行執(zhí)行,例如 Web 服務(wù)器、FTP 服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)

服務(wù)器等,從而共同完成工作任務(wù)。

Nginx 負(fù)載均衡策略

2.6.2.1 輪詢(默認(rèn))

每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后

端服務(wù)器 down 掉,能自動(dòng)剔除。

2.6.2.2 指定權(quán)重

指定輪詢幾率,weight 和訪問比率成正比,用于后端服務(wù)器

性能不均的情況。

upstream backserver {

server 192.168.0.14 weight=10;

server 192.168.0.15 weight=10;

}

IP 綁定 ip_hash

每個(gè)請(qǐng)求按訪問 ip 的 hash 結(jié)果分配,這樣每個(gè)訪客固定訪

問一個(gè)后端服務(wù)器,可以解決 session 的問題。

upstream backserver {

ip_hash;

server 192.168.0.14:88;

server 192.168.0.15:80;

}

需求

nginx 作為負(fù)載均衡服務(wù)器,用戶請(qǐng)求先到達(dá) nginx,再由 nginx 根據(jù)負(fù)載配置

將請(qǐng)求轉(zhuǎn)發(fā)至 tomcat 服務(wù)器。

nginx 負(fù)載均衡服務(wù)器:192.168.70.144

tomcat1 服務(wù)器:192.168.70.143:8080

tomcat2 服務(wù)器:192.168.70.143:9090

Nginx 的集群配置

節(jié)點(diǎn)說明:在 http 節(jié)點(diǎn)里添加:#定義負(fù)載均衡設(shè)備的 Ip 及設(shè)備狀態(tài)upstream myServer {server 127.0.0.1:9090 down;server 127.0.0.1:8080 weight=2;server 127.0.0.1:6060;server 127.0.0.1:7070 backup;}在需要使用負(fù)載的 Server 節(jié)點(diǎn)下添加proxy_pass http://myServer;upstream 每個(gè)設(shè)備的狀態(tài):down 表示單前的 server 暫時(shí)不參與負(fù)載weight 默認(rèn)為 1.weight 越大,負(fù)載的權(quán)重就越大fail_timeout:次失敗后,暫停的時(shí)間 默認(rèn) 10smax_fails :允許請(qǐng)求失敗的次數(shù)默認(rèn)為 1.當(dāng)超過最大次數(shù)時(shí),返回backup: 其它所有的非 backup 機(jī)器 down 或者忙的時(shí)候,請(qǐng)求 backup 機(jī)器。所以這臺(tái)機(jī)器壓力會(huì)最輕。nginx.conf

user root;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65;upstream tomcat_server1{server 192.168.70.143:8080 weight=10;server 192.168.70.143:9090 weight=2; } server { listen 80;#為虛擬機(jī)指定 IP 或者是域名 server_name test.bjsxt.com;#主要配置路由訪問信息 location / { #用于指定訪問根目錄時(shí),訪問虛擬主機(jī)的 web 目錄 proxy_pass http://tomcat_server1; #在不指定訪問具體資源時(shí),默認(rèn)的展示資源的列表 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }}}http 協(xié)議代理

由于 ftp 服務(wù)器是基于 ftp 協(xié)議處理的。那么現(xiàn)在我想在外部訪問該圖片,是沒有辦法

訪問的。他是不能處理 http 協(xié)議的。所以我們需要擁有一個(gè)能夠處理 http 協(xié)議代理服務(wù)器。

其實(shí)就是使用了 Nginx 的虛擬主機(jī)的方式。

需求

使用 Nginx 的基于域名的虛擬主機(jī)的方式來完成在 KindEditor 中添加圖片時(shí)的圖片回

顯處理。

nginx:192.168.70.144

VSFTPD:192.168.70.144

注意:nginx 與 VSFTPD 必須安裝到同一個(gè)環(huán)境中

解決 KindEditorDemo 項(xiàng)目中圖片回顯的問題

1修改系統(tǒng)的 hosts 文件

修改項(xiàng)目的 resource.properties 文件

FTP_HOST=192.168.70.144FTP_PORT=21FTP_USERNAME=ftpuserFTP_PASSWORD=ftpuserFTP_BASEPATH=/home/ftpuser/HTTP_BASE_PATH=http://img.bjsxt.com修改 nginx.conf

user root;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80;#為虛擬機(jī)指定 IP 或者是域名 server_name img.bjsxt.com;#主要配置路由訪問信息 location / { #用于指定訪問根目錄時(shí),訪問虛擬主機(jī)的 web 目錄 root /home/ftpuser/; #在不指定訪問具體資源時(shí),默認(rèn)的展示資源的列表 index index.html index.htm; }error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}

關(guān)鍵詞:

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉