Nginx反向代理和负载均衡v13.docx

上传人:b****7 文档编号:16507748 上传时间:2023-07-14 格式:DOCX 页数:23 大小:25.36KB
下载 相关 举报
Nginx反向代理和负载均衡v13.docx_第1页
第1页 / 共23页
Nginx反向代理和负载均衡v13.docx_第2页
第2页 / 共23页
Nginx反向代理和负载均衡v13.docx_第3页
第3页 / 共23页
Nginx反向代理和负载均衡v13.docx_第4页
第4页 / 共23页
Nginx反向代理和负载均衡v13.docx_第5页
第5页 / 共23页
Nginx反向代理和负载均衡v13.docx_第6页
第6页 / 共23页
Nginx反向代理和负载均衡v13.docx_第7页
第7页 / 共23页
Nginx反向代理和负载均衡v13.docx_第8页
第8页 / 共23页
Nginx反向代理和负载均衡v13.docx_第9页
第9页 / 共23页
Nginx反向代理和负载均衡v13.docx_第10页
第10页 / 共23页
Nginx反向代理和负载均衡v13.docx_第11页
第11页 / 共23页
Nginx反向代理和负载均衡v13.docx_第12页
第12页 / 共23页
Nginx反向代理和负载均衡v13.docx_第13页
第13页 / 共23页
Nginx反向代理和负载均衡v13.docx_第14页
第14页 / 共23页
Nginx反向代理和负载均衡v13.docx_第15页
第15页 / 共23页
Nginx反向代理和负载均衡v13.docx_第16页
第16页 / 共23页
Nginx反向代理和负载均衡v13.docx_第17页
第17页 / 共23页
Nginx反向代理和负载均衡v13.docx_第18页
第18页 / 共23页
Nginx反向代理和负载均衡v13.docx_第19页
第19页 / 共23页
Nginx反向代理和负载均衡v13.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Nginx反向代理和负载均衡v13.docx

《Nginx反向代理和负载均衡v13.docx》由会员分享,可在线阅读,更多相关《Nginx反向代理和负载均衡v13.docx(23页珍藏版)》请在冰点文库上搜索。

Nginx反向代理和负载均衡v13.docx

Nginx反向代理和负载均衡v13

Nginx反向代理和负载均衡

安装文档

Nginx反向代理和负载均衡1

1.系统环境3

2.总体结构3

3.安装过程3

3.1.安装准备3

3.2.安装软件4

3.2.1.设置本地yum源4

3.2.2.安装前提5

3.2.3.安装Nginx5

3.2.3.1.创建运行用户、组nginx5

3.2.3.2.复制文件并安装nginx5

3.2.3.3.修改Linux文件数限制6

3.2.3.4.etc/sysconfig/iptables[修改防火墙配置]6

3.2.3.5.etc/init.d/nginx[编写nginx启动脚本]7

3.2.3.6.设置开机启动nginx8

3.2.3.7.启动nginx8

3.2.3.8.停止nginx8

3.2.4.配置Nginx9

3.2.4.1.usr/local/nginx/nginx.conf9

3.2.4.2.配置反向代理和负载均衡web服务器模板10

3.2.5.优化linux内核参数12

3.3.测试结果14

3.4.附录14

1.系统环境

IP:

10.19.110.247[Nginx-FX-WEB1]

OS:

CentOSrekease6.6(Final)amd64,

Mem:

4G,

CPU:

4,

/dev/sda140G/data,

/dev/xvda1488M/boot,

/dev/xvda235G/,

tmpfs1.9G/dev/shm

IP:

10.19.110.248[Nginx-FX-WEB2]

OS:

CentOSrekease6.6(Final)amd64,

Mem:

8G,

CPU:

4,

/dev/sda140G/data,

/dev/xvda1488M/boot,

/dev/xvda235G/,

tmpfs1.9G/dev/shm

IP:

10.19.251.105[JK-CL-FW]

OS:

CentOSrelease6.5(Final)

Mem:

3G,

CPU:

4,

/dev/sda589G4.1G80G5%/

tmpfs2.0G72K2.0G1%/dev/shm

/dev/sda1194M34M151M19%/boot

/dev/sda229G172M28G1%/home

/dev/sdb150G214M47G1%/usr/local

/dev/sdb250G4.5G43G10%/data

2.总体结构

3.安装过程

3.1.安装准备

1.挂载磁盘

#fdisk/dev/sdb

参考:

附录6

P2178.3.1节,磁盘分区:

fdisk;[]

P2238.3.2节,磁盘格式化;[mkfs-text3/dev/sdb1]

P2258.3.3节,磁盘检验:

fsck,badblocks;[fsck-C-f-text3/dev/sdb1]

P2268.3.4节,磁盘挂载与卸载;[mount/dev/sdb1/usr/local]

复制安装文件到/data并解压到/usr/local/src

Nginx:

nginx-1.6.2.tar.gz,nginx-1.6.2.tar.gz.asc,nginx_tcp_proxy_module-master.zip

JDK:

系统安装时自带

#java-version

javaversion"1.7.0_45"

OpenJDKRuntimeEnvironment(rhel-2.4.3.3.el6-x86_64u45-b15)

OpenJDK64-BitServerVM(build24.45-b08,mixedmode)

3.2.安装软件

3.2.1.设置本地yum源

Ø复制系统安装ISO到/data目录[CentOS-6.6-x86_64-bin-DVD1.iso]

Ø挂载ISO文件

mkdir/media/CentOS

mount-tiso9660-oloop /data/CentOS-6.6-x86_64-bin-DVD1.iso/media/CentOS

df-h

FilesystemSizeUsedAvailUse%Mountedon

/dev/sda589G4.1G80G5%/

tmpfs2.0G72K2.0G1%/dev/shm

/dev/sda1194M34M151M19%/boot

/dev/sda229G172M28G1%/home

/dev/sdb150G214M47G1%/usr/local

/dev/sdb250G4.5G43G10%/data

/data/CentOS-6.6-x86_64-bin-DVD1.iso4.4G4.4G0100%/media/CentOS

已经挂载成功

Ø 修改CentOS-Media.repo

vim/etc/yum.repos.d/CentOS-Media.repo

原始文件如下,注释不是原文件内容:

[c6-media]

name=CentOS-$releasever-Media #自定义名称

baseurl=file:

///media/CentOS/

       file:

///media/cdrom/

       file:

///media/cdrecorder/#如果不修改,可以将ISO文件挂载到/media/CentOS路径下,我选择不修改;如果修改,可以添加自己设置的挂载路径,如file:

///mnt/cdrom/

gpgcheck=1 

enabled=1#启用yum源,0为不启用,1为启,这里要用到本地源,所以为1

gpgkey=file:

///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Ø清除yum缓存

# yumcleanall 

3.2.2.安装前提

参考附录2{《深入理解Nginx模块开发与架构解析》第25页1.3.2使用Nginx的必备软件}一节内容

Ø安装gcc-c++

GNU编译器套件(GNUCompilerCollection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)

sudoyum-y--disablerepo=*--enablerepo=c6-mediainstallgcc-c++

注:

查看是否安装gcc使用以下命令

gcc–v

rpm-qa|grepgcc

Ø安装

openssl-devel:

pcre-devel:

添加对rewrite的支持,编译参数中启用了对utf8字符的支持,以便nginx支持中文的正则表达式

zlib-devel:

sudoyum-y--disablerepo=*--enablerepo=c6-mediainstallzlibzlib-devel

sudoyum-y--disablerepo=*--enablerepo=c6-mediainstallopensslopenssl-devel

sudoyum-y--disablerepo=*--enablerepo=c6-mediainstallpcrepcre-devel

3.2.3.安装Nginx

3.2.3.1.创建运行用户、组nginx

Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。

如:

创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。

useradd-M-s/sbin/nologinnginx

3.2.3.2.复制文件并安装nginx

将安装包文件上传到/usr/local中

/usr/local

/nginx-1.6.2.tar.gz

然后执行:

cd/usr/local

tar-zxv-fnginx-1.6.2.tar.gz

rm-rfnginx-1.6.2.tar.gz

mvnginx-1.6.2nginx

cd/usr/local/nginx

./configure--prefix=/usr/local/nginx--user=nginx--group=nginx--conf-path=/usr/local/nginx/nginx.conf--with-http_stub_status_module--with-http_ssl_module--with-http_addition_module--with-http_realip_module--with-http_sub_module--with-http_gzip_static_module--with-debug--with-cc-opt='-g-O0'

makeCFLAGS="-g-O0"

makeinstall

 

configure运行结果

{

Configurationsummary

+usingsystemPCRElibrary

+usingsystemOpenSSLlibrary

+md5:

usingOpenSSLlibrary

+sha1:

usingOpenSSLlibrary

+usingsystemzliblibrary

nginxpathprefix:

"/usr/local/nginx"

nginxbinaryfile:

"/usr/local/nginx/sbin/nginx"

nginxconfigurationprefix:

"/usr/local/nginx"

nginxconfigurationfile:

"/usr/local/nginx/nginx.conf"

nginxpidfile:

"/usr/local/nginx/logs/nginx.pid"

nginxerrorlogfile:

"/usr/local/nginx/logs/error.log"

nginxhttpaccesslogfile:

"/usr/local/nginx/logs/access.log"

nginxhttpclientrequestbodytemporaryfiles:

"client_body_temp"

nginxhttpproxytemporaryfiles:

"proxy_temp"

nginxhttpfastcgitemporaryfiles:

"fastcgi_temp"

nginxhttpuwsgitemporaryfiles:

"uwsgi_temp"

nginxhttpscgitemporaryfiles:

"scgi_temp"

}

注:

配置前可以参考:

./configure--help给出说明#

(1)

参考附录2{《深入理解Nginx模块开发与架构解析》第30页1.5.1configure的命令参数[p35表1-11]}一节内容

--prefix=/usr/local/nginx:

设定Nginx的安装目录

--user和—group:

指定Nginx运行用户和组

--conf-path=/usr/local/nginx/nginx.conf:

配置文件放置路径

--with-http_stub_status_module:

启用http_stub_status_module模块以支持状态统计

--with-http_ssl_module:

支持SSL协议

--with-http_addition_module:

在返回客户端的HTTP包体头部或者尾部增加内容

--with-http_realip_module:

从客户端请求里的header信息(如X-Real-IP\X-Forwarded-For)中获取真正的客户端IP地址

--with-http_sub_module:

在返回客户端的HTTP响应包中将指定的字符串替换为自己需要的字符串

例如:

在HTML的返回中,将替换为

--with-http_gzip_static_module:

启用静态压缩

--with-debug:

启用调试

参考附录1{《深入剖析Nginx》第10页2.1.1绑定Nginx到gdb}一节内容

用于绑定Nginx到gdb的参数:

--with-cc-opt='-g-O0'

makeCFLAGS="-g-O0"

****为了服务器的安全性,修改nginx名称和版本号

cd/usr/local/src/nginx/src/core

vimnginx.h

修改其中的两个宏定义为

#defineNGINX_VERSION"0.0.0"

#defineNGINX_VER"T.G.CloudX/"NGINX_VERSION

保存退出

3.2.3.3.修改Linux文件数限制

系统默认值为1024{进程的最大连接数受Linux系统进程的最大打开文件数限制}

用于配合Nginx配置中的[worker_connections65535]

{用于定义Nginx每个进程的最大连接数,默认是1024.最大客户端连接数由worker_processes和worker_connections决定,即Max_client=worker_processes*worker_connections,

在作为反向代理时,max_clients变为:

max_clients=worker_processes*worker_connections/4}

ulimit-n65535

3.2.3.4./etc/sysconfig/iptables[修改防火墙配置]

vim/etc/sysconfig/iptables

#添加配置项 【注意,此处配置一定要放在22端口的下一行】

80端口是在10.19.110.248机器上打开

iptables -L -n--line-number

iptables-DINPUT5#此句删除REJECT行

serviceiptablessave

iptables-AINPUT-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT

iptables-AINPUT-jREJECT--reject-withicmp-host-prohibited

serviceiptablessave

#配置结果如下

#Generatedbyiptables-savev1.4.7onxxx

*filter

:

INPUTACCEPT[0:

0]

:

FORWARDACCEPT[0:

0]

:

OUTPUTACCEPT[2:

328]

-AINPUT-mstate--stateRELATED,ESTABLISHED-jACCEPT

-AINPUT-picmp-jACCEPT

-AINPUT-ilo-jACCEPT

-AINPUT-ptcp-mstate--stateNEW-mtcp--dport22-jACCEPT

-AINPUT-ptcp-mstate--stateNEW-mtcp--dport80-jACCEPT

-AINPUT-jREJECT--reject-withicmp-host-prohibited

-AFORWARD-jREJECT--reject-withicmp-host-prohibited

COMMIT

#Completedon

#重启防火墙

serviceiptablesrestart

chkconfigiptablesonxxx

允许80端口的访问

用chkconfigiptableson实现开机启动启用

3.2.3.5./etc/init.d/nginx[编写nginx启动脚本]

为了使Nginx服务的启动、停止、重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和service工具来进行管理

vim/etc/init.d/nginx

#!

/bin/bash

#nginxStartupscriptfortheNginxHTTPServer

#itisv.0.0.2version.byandy_linky@

#chkconfig:

-8515

#description:

Nginxisahigh-performancewebandproxyserver.

#Ithasalotoffeatures,butit'snotforeveryone.

#processname:

nginx

#pidfile:

/var/run/nginx.pid

#config:

/usr/local/nginx/nginx.conf

nginxd=/usr/local/nginx/sbin/nginx

nginx_config=/usr/local/nginx/nginx.conf

nginx_pid=/usr/local/nginx/logs/nginx.pid

RETVAL=0

prog="nginx"

#Sourcefunctionlibrary.

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

#Sourcenetworkingconfiguration.

./etc/sysconfig/network

#Checkthatnetworkingisup.

[${NETWORKING}="no"]&&exit0

[-x$nginxd]||exit0

#Startnginxdaemonsfunctions.

start(){

if[-e$nginx_pid];then

echo"nginxalreadyrunning...."

exit1

fi

echo-n$"Starting$prog:

"

daemon$nginxd-c${nginx_config}

RETVAL=$?

echo

[$RETVAL=0]&&touch/var/lock/subsys/nginx

return$RETVAL

}

#Stopnginxdaemonsfunctions.

stop(){

echo-n$"Stopping$prog:

"

killproc$nginxd

RETVAL=$?

echo

[$RETVAL=0]&&rm-f/var/lock/subsys/nginx/usr/local/nginx/logs/nginx.pid

}

#reloadnginxservicefunctions.

reload(){

echo-n$"Reloading$prog:

"

#kill-HUP`cat${nginx_pid}`

killproc$nginxd-HUP

RETVAL=$?

echo

}

#Seehowwewerecalled.

case"$1"in

start)

start

;;

stop)

stop

;;

reload)

reload

;;

restart)

stop

start

;;

status)

status$prog

RETVAL=$?

;;

*)

echo$"Usage:

$prog{start|stop|restart|reload|status|help}"

exit1

esac

exit$RETVAL

chmod+x/etc/init.d/nginx

chkconfig--addnginx

3.2.3.6.设置开机启动nginx

vi/etc/rc.local

 在文件最后加一行如下内容,保存并退出,下次重启会生效。

/etc/init.d/nginxstart

3.2.3.7.启动nginx

确保系统的 80 端口没被其他程序占用,

/usr/local/nginx/sbin/nginx

servicenginxrestart

 检查是否启动成功:

lsof-i:

80

查看80端口现在运行的情况

netstat-anpt|grepnginx

查看nginx服务是否启动

tcp000.0.0.0:

800.0.0.0:

*LISTEN8481/nginx

8481是pid号

3.2.3.8.停止nginx

killall-9nginx

killall-HUPnginx

servicenginxstop

servicenginxrestart

servicenginxreload

PID号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的PID号来进行控制

3.2.4.配置Nginx

3.2.4.1./usr/local/nginx/nginx.conf

vim/usr/local/nginx/conf/nginx.conf

参考附录2P52-2.3Nginx服务的基本配置一节内容

#daemonoff;

#nginx运行用户和组

user  nginxnginx;  

#启动进程,通常设置成和cpu的数量相等参考附录2P56-2.3.3节

worker_processes  4;

worker_cpu_affinity1000010000100001;

worker_rlimit_nofile65535;

 #全局错误日志及PID文件

pid/var/run/nginx.pid;

error_log logs/error.log;

events{

        #epoll是多路复用IO(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2