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

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

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

1.介绍

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

2.涉及

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链接

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容