Nginx反向代理和jetty服务器配置

这里是修真院前端小课堂,每篇分享文从html

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】前端

八个方面深度解析前端知识/技能,本篇分享的是:java

【Nginx反向代理和jetty服务器配置】linux

 

你们好,我是IT修真院深圳分院第01期学员,一枚正直纯洁善良的web程序员。nginx

今天给你们分享一下,修真院官网JAVA(职业)任务3,深度思考中的知识点——Nginx反向代理。git

1.介绍程序员

Nginx是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。github

2.涉及web

2.1 代理服务器浏览器

通常是指局域网内部的机器经过代理服务器发送请求到互联网上的服务器,代理服务器通常做用在客户端。 一个完整的代理请求过程为:客户端首先与代理服务器建立链接,接着根据代理服务器所使用的代理协议,请求对目标服务器建立链接、或者得到目标服务器的指定资源。 Web代理(proxy)服务器是网络的中间实体。 代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。HTTP的代理服务器便是Web服务器又是Web客户端。

2.2 正向代理

是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),而后代理向原始服务器转交请求并将得到的内容返回给客户端。客户端必需要进行一些特别的设置才能使用正向代理。

2.3 反向代理

在服务器端接受客户端的请求,而后把请求分发给具体的服务器进行处理,而后再将服务器的响应结果反馈给客户端。

二者的区别在于代理的对象不同:正向代理代理的对象是客户端,反向代理代理的对象是服务端。

2.4 为何要用反向代理

便于服务器分布扩展。在实际中单个服务器处理客户端请求能力有一个极限,当请求量过大,则服务器忙不过来,所以使用多个服务器来共同分担用户的请求处理,这些服务器提供相同的服务,对于用户来讲没有差异。那么就须要一个负载均衡设备来分发用户的请求到空闲的服务器上,而后服务器返回结果到负载均衡设备上,负载均衡再将其返回给用户。这样当增长/移除某台服务器时,只须要修改负载均衡的服务器列表,而不会影响服务。

安全。避免ip和端口直接暴露在internet,使主机免于被开采安全漏洞,代理服务器数量有限,安全防御更方便。

2.5 nginx反向代理配置

编辑nginx.conf文件:

 

a

上图是在服务器上解压安装nginx的tar包后,安装目录下的conf/nginx.conf文件,红色部分为自定义配置,其中log_format表示nginx日志格式配置,userformat是自定义的日志格式名,后面的是一些日志输出参数,从左到右依次表示:客户端地址,客户端名称,服务器本地时间,请求信息,请求状态码,主体内容大小,请求处理时间,响应延时,从哪个地址跳转过来,请求代理,XXF头。任务3要求统计访问次数和响应延时,使用awk命令处理配置路径下的8081_access.log文件获取须要的信息。

server内容表示虚拟主机配置,可配置多个。内容依次为:端口,本地地址,日志配置(日志路径、格式),反向代理配置(location表示子域,proxy_pass表示代理的服务器地址),这里面须要注意的一点是:proxy_pass有的人须要在后面加“/”才能成功,而有的不须要也能成功,这一点我尚未搞清楚缘由。

2.6 jetty服务器配置

接下来就是配置web服务器了,可使用jetty、tomcat或resin安装配置,我用的是jetty,精巧方便。

下载jetty的tar.gz包在服务器上选择一个位置解压,个人位置是/opt/jetty,解压后进入目录,这个目录就是${jetty.home}目录(由于jetty建议${jetty.home}和${jetty.base}分离,便于配置管理和版本升级),找到start.jar包,另外新建一个目录,好比个人/opt/web/jettybase,这个目录做为${jetty.base},在此目录下运行${jetty.home}中找到的start.jar包,并加入可选的模块(好比:java -jar /opt/jetty/start.jar --add-to-start=deploy,http,logging-log4j,模块可在${jetty.home}下的modules文件夹中自行选择所需),而后ls命令查看目录下的文件,找到start.ini文件进行编辑,设定运行端口和项目目录,以下图:

 

b

 

c

如此,jetty就安装完成了,将项目代码打包后上传到${jetty.base}的webapps目录下,就能够运行了,启动jetty在${jetty.home}的bin文件夹下,运行jetty.sh,而后在浏览器输入服务器ip+端口号+项目包名,若是一切正常的话,就能够看到你的项目主页,输入服务器ip+nginx配置的端口号,也能够进入项目主页。

若是你嫌启动jetty太麻烦,能够将jetty配置为系统服务:

新建目录好比/opt/jetty/temp,运行如下命令:

cp /opt/jetty/jetty-distribution-9.3.1-SNAPSHOT/bin/jetty.sh /etc/init.d/jetty

echo "JETTY_HOME=/opt/jetty/jetty-distribution-9.3.1-SNAPSHOT" > /etc/default/jetty

echo "JETTY_BASE=/opt/web/mybase" >> /etc/default/jetty

echo "TMPDIR=/opt/jetty/temp" >> /etc/default/jetty

而后运行service jetty status进行测试,若是正常的话,会出现如下内容:

Checking arguments to Jetty:

START_INI      =  /opt/web/mybase/start.ini

JETTY_HOME    =  /opt/jetty/jetty-distribution-9.3.1-SNAPSHOT

JETTY_BASE    =  /opt/web/mybase

JETTY_CONF    =  /opt/jetty/jetty-distribution-9.3.1-SNAPSHOT/etc/jetty.conf

JETTY_PID      =  /var/run/jetty.pid

JETTY_START    =  /opt/jetty/jetty-distribution-9.3.1-SNAPSHOT/start.jar

JETTY_LOGS    =  /opt/web/mybase/logs

CLASSPATH      =

JAVA          =  /usr/bin/java

JAVA_OPTIONS  =  -Djetty.state=/opt/web/mybase/jetty.state

........

我运行的时候报错:在默认路径下找不到java。缘由是我服务器安装的jdk路径与jetty的默认寻找路径不一致,所以须要手动将java路径写入/etc/default/jetty:

 

d

再次运行,成功!

再次进入/opt/web/jettybase/目录,找到resource文件夹进入,有一个log4j.xml文件,这是jetty运行的日志配置文件,能够自行按须要配置,个人配置以下:

 

e

以上就是任务3服务器nginx和jetty配置的内容。

3.常见问题

实际使用

4.解决方案

5.编码实战

6.扩展思考

nginx优势

1)更快:单次请求获得响应更快,高峰状况下,比其余web服务器如Apache更快响应请求。这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。而在高并发服务器中,轮询I/O是很是耗时间的操做。

2)高扩展性,跨平台,高可靠性:nginx由多个不一样功能、不一样层次、不一样类型且耦合度极低的模块组成,这些模块都是嵌入到二进制文件中执行的,不管官方发布的模块仍是第三方模块都是如此。这使得第三方模块同样具有极其优秀的性能,充分利用Nginx的高并发特性,所以,许多高流量的网站都倾向于开发符合本身业务特性的定制模块。

3)低内存消耗,高并发链接:通常状况下,10 000个非活跃的HTTP Keep-Alive链接在Nginx中仅消耗2.5MB的内存,单机支持10万以上的并发链接。

4)热部署,BSD协议:master管理进程与worker工做进程的分离设计,使得Nginx可以提供热部署功能,便可以在7×24小时不间断服务的前提下,升级Nginx的可执行文件。固然,它也支持不中止服务就更新配置项、更换日志文件等功能。BSD许可协议容许用户无偿使用Nginx,容许用户在本身的项目中直接使用或修改Nginx源码,而后发布,这吸引了无数开发者继续为Nginx贡献本身的智慧。

拥有无数个官方功能模块、第三方功能模块使得Nginx可以知足绝大部分应用场景,这些功能模块间能够叠加以实现更增强大、复杂的功能,有些模块还支持Nginx与Perl、Lua等脚本语言集成工做,大大提升了开发效率。

7.参考文献

Nginx是什么,有什么优势?为何选择Nginx作web服务器软件?

Nginx中文文档

8.更多讨论

安装nginx tar.gz包配置linux系统服务

鸣谢

感谢你们观看

PPT连接

------------------------------------------------------------------------------------------------------------------------

今天的分享就到这里啦,欢迎你们点赞、转发、留言、拍砖~

更多内容,能够加入IT交流群565734203与你们一块儿讨论交流

 

这里是技能树·IT修真院:https://www.jnshu.com,初学者转行到互联网的汇集地

相关文章
相关标签/搜索