当前位置:首页 > 科技 > 正文

nginx反向代理tomcat,有什么好的请大神们帮助

nginx反向代理tomcat,有什么好的请大神们帮助

大家好,今天小编来为大家解答nginx反向代理tomcat这个问题,求一个nginx反向代理jsp的配置,有什么好的请大神们帮助很多人还不知道,现在让我们一起来看看吧!...

大家好,今天小编来为大家解答nginx反向代理tomcat这个问题,求一个nginx反向代理jsp的配置,有什么好的请大神们帮助很多人还不知道,现在让我们一起来看看吧!

nginx如何实现动静分离

动静分离

动静分离是根据一定规则把静态文件(html、css、js、jpg等)和动态文件(jsp,.do等)区分开来,采用静态文件和动态文件分开部署,以提高用户访问静态文件的速度,降低对后台应用的访问,提高服务器响应速度和性能。静态文件由Nginx服务器处理,直接获取磁盘文件,动态文件转发到应用服务器中处理,如Tomcat。

创建静态文件目录

[root@192~]#mkdir/soft/code/static/

将css、jpg文件上传至/soft/code/static目录中,如下图所示:

配置Nginx

upstreamtest{ip_hash;server192.168.0.105:80;}server{listen80;server_name192.168.137.128;#静态资源配置location/static/{root/soft/code/;autoindexon;}#动态资源配置location/example{proxy_passhttp://test;proxy_redirectdefault;}}

查看静态文件目录测试文件

nginx.css文件:

/*字体居中标红*/p{text-align:center;color:red;}

nginx.html文件:

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"><linkrel="stylesheet"href="/static/nginx.css"type="text/css"/><title>动态分离</title></head><body><p>Dynamicandstaticseparationdemo!</p><imgsrc="/static/nginx.jpg"/></body></html>

页面测试

将nginx.html文件放在Tomcat服务器中,启动Tomcat服务,访问http://nginx_ip:port/example/nginx.html,如下图所示:

注意事项root指定目录的上级目录,并且该上级目录要含有locatoin指定名称的同名目录。

#访问/static/目录下的文件时,Nginx会去/soft/code/static/目录下找文件。location/static/{root/soft/code/;#列出整个目录autoindexon;}

修改nginx.conf文件时,要重启Nginx。

Nginx启动命令:

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

Nginx重启命令:

/usr/local/nginx/sbin/nginx-sreload

Nginx停止命令:

/usr/local/nginx/sbin/nginx-sstop

Nginx错误日志查看

[root@192~]#cd/usr/local/nginx/logs/

[root@192logs]#tail-ferror.log

如果解决了你的疑惑,请点点关注和评论,谢谢大家支持。

正春华枝俏,待秋实果茂,与君共勉。

Nginx能不能实现外网服务器访问内网服务器资源的功能

当然可以。

Nginx是一款高性能的HTTP和反向代理服务器,具有内存占用小、高并发的特性。国内互联网大企业大多使用的就是Nginx,淘宝还基于Nginx开发了Tengine。

Nginx的用途:

1、反向代理

在LNMP这种架构模式下,其实就用到了反向代理。因为Nginx它默认只支持静态资源的请求,比如说PHP脚本也不是由Nginx直接解析的,而是由Nginx反向代理(通过proxy_pass指令)到PHP-FPM去解析的。

所以我们通常在Apache、Tomcat、IIS之前加上Nginx,由Nginx反向代理到后端服务器上。

2、负载均衡

当我们的站点访问量大时,为了缓解单一应用服务器的压力我们通常会扩容多台服务器,此时如何把流量分发给不同服务器呢?通过Nginx就可以实现负载均衡了,Nginx负载均衡策略也很多,主要有:RR(轮询)、weight(权重)、ip_hash(IPHash)、fair(后端服务器响应时间)、url_hash(URLHash)这几种。

3、动静分离

Nginx本身只支持静态资源的处理,借助Nginx我们可以实现动静分离,即:将静态请求交给Nginx处理,将动态请求通过转发给后端服务器。

4、Nginx扩展

通过Nginx扩展可以实现很多功能,如:

图片在线裁剪;

请求合并;

资源压缩等。

tomcat如何定向访问

要定向访问Tomcat服务器,可以通过配置Tomcat的虚拟主机来实现。首先,在Tomcat的server.xml文件中添加一个Host元素,指定虚拟主机的名称和域名。然后,在该Host元素内部添加一个Context元素,指定要定向访问的目标URL。最后,将域名解析到Tomcat服务器的IP地址上。这样,当用户访问该域名时,Tomcat服务器会自动将请求定向到指定的目标URL。

求一个nginx反向代理jsp的配置,有什么好的请大神们帮助

Nginx的反向代理

虚拟主机

一个server{}就是一个虚拟主机

基于域名的

Nginx方向代理示例(代理Tomcat):

安装Tomcat

tar-zxvfapache-tomcat-7.0.61.tar.gz

解压Tomcat

cdapache-tomcat-7.0.61

bin/startup.sh

(关闭bin/shutdown.sh)

访问端口8080

http://192.168.17.9:8080/

通过访问Nginx来访问Tomcat

修改nginx.conf

server{

server_namewww.nginx1.com

location/{

proxypasshttp://192.168.17.9:8080/

}

}

此时,访问Nginx

http://www.nginx1.com

负载均衡的方向代理

反向代理配置nginx.conf:

upstream名字{

serverIP:PORT;

serverIP:PORT;

server{

location/{

proxy_passhttp://名字;

}

}

示例:

修改配置文件:

vimnginx.conf

upstreamnginx{

sever192.168.17.9:8080

sever192.168.17.10:8080

}

server{

location/{

proxy_passhttp://nginx;

}

}

启动2个Tomcat(在192.168.17.9和192.168.17.10两台机器上)

为了区分两个Tomcat,修改index.jsp

vimwebapps/ROOT/index.jsp

(干掉<head></head>,因为里面有个tomcat.css资源文件,每次都要去请求这个文件,达不到轮询的效果)

bin/startup.sh

servicenginxreload

http://www.nginx1.com/

此时可以看到它轮询访问Tomcat(刷新就可以看到,因为两个Tomcat的index.jsp已经做了区分)。

————————————————

tomcat与nginx区别

nginx和tomcat区别是:

1、从应用方面。tomcat一般是做动态解析才会用得到,支持jsp的解析,需要配置JDK支持。

2、nginx,则一般是做静态,本身不具备动态解析功能,需要配置其他插件或通过其他软件协同才具备动态功能,比如php,tomcat,或者proxypass到win2008的iis服务器做ASP的动态链接等,但nginx在静态上的功能非常强大,也可做访问控制,而且可以做成各种协议负载服务器,包括流媒体的也可以做,具体得去官方网站去看。

3、在性能方面。如果再不做系统调优的情况下,tomcat一般支持并发并不高100个差不多,nginx在静态方面支持并发轻松达几万。

tomcat与nginx,apache的区别是什么

Tomcat与Nginx、Apache的关系如下图。由配送中心选择Apache、Nginx中的某一辆货车将包裹送给客户。虽然Apache、Nginx两辆车的用途是一样的,仔细区分它们两还是有区别的,比如:货物装载的速度、方式不一样,Apache有水箱可以直接运送活鱼而Nginx没有。

Tomcat有点像装活鱼的特殊包装。经过特殊包装打包的活鱼就可以通过Nginx和Apache运送到用户手中。另外,使用Tomcat包含了一种慢速的配送服务,所以配送中心一般都采用Nginx、Apache等配送。

通过上面的比方引申Apache、Nginx、Tomcat的实际用途

Apache全称ApacheHTTPServer,它是Apache软件基金会的一个开放源码的网页伺服服务器软件。

Apache支持模块多,性能稳定。Apache本身是静态解析(静态页面),适合静态的HTML、图片等,但可以通过扩展脚本、模块来支持动态页面等。Apche可以支持PHP、CGI、Perl,但要使用Java就需要Tomcat,Java请求会通过Apache转发给Tomcat处理;

Nginx同样也是一款开源的HTTPServer,它是由俄罗斯人编写的轻量级HTTP服务。

Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP、POP3、SMTP代理服务器。Nginx本身不支持生成动态页面,很大部分Web服务器使用Nginx,主要通过Nginx的反向代理来实现负载均衡器。

Apache、Nginx本质上就是一种运用在HTTP服务器上某种应用程序,它们通过绑定服务器的IP地址并监听某一个TCP端口来接收并处理HTTP请求,这样用户(一般通过IE、Chrome、Firefox等发送请求并显示内容)就能够通过HTTP协议来获取服务器上的网页(HTML+CSS样式)、文档(PDF、txt、rar等)、音频、视频等资源。如下图:

不仅Apache和Nginx,绝大多数编程语言所包含的类库中也可以实现简单的HTTP服务供开发者使用,如:JavaHTTPServer、PythonSimpleHTTPServer。

Apache和Nginx的对比

Nginx使用异步非阻塞型事件驱动的方法来处理请求,而Apache则是通过同步阻塞型的方法来处理请求。

Apache接收一个请求后,就会创建一个进程,每个进程内单线程。对于一个负载相对较高的网站来说,256的进程,也就是256个线程。线程处理请求时是同步阻塞模式,会一直等待该请求读取程序文件(IO)(同步),执行业务逻辑,返回给客户端,所有操作完成之后才能处理下一个请求(阻塞)。

如果服务器已经达到256的极限,那么接下去的访问就需要排队。这也就是为什么某些服务器负载不高的原因了。

而Ngnix接收一个请求后,不会等待这个请求的文件读取操作完成之后才接收下一个请求,它不会等待这个请求的后续的处理结果。而是会马上循环处理下一个请求(不阻塞)。请求的程序文件执行完成之后,会主动通知该线程,不用你主动去等待或者轮询查看(异步)。最后返回给客户端。

这样做,每个请求过来就不需要等待很长的时间排队,而是马上就能接收,开始进行处理了。等处理完成之后,会主动通知回调这个线程进行数据返回。

基于上述特性Nginx更轻量级,比Apache占用更少的内存及资源抗并发,Nginx静态处理性能比Apache高3倍以上。在高并发下Nginx能保持低资源低消耗高性能高度模块化的设计。但Apache组件比Nginx多,对PHP的支持比较简单,Apche的Rewrite也比Nginx强大一些。

Tomcat用于扩充Apache和Nginx的动态性能

从上面我们知道了Apache和Nginx的优势在于静态解析,那么动态解析就会交给其他模块处理,如Tomcat。

Tomcat是由Apache软件基金会旗下Jakarta项目开发的Servlet容器,实现对Servlet和JavaServerPage(jsp)的支持。Tomcat本身也包含了HTTP服务,也可单做独立的Web服务,但用的不多。

Tomcat一共设计了4种容器,它们分别为Engine、Host、Context、Wrapper,各个容器组件之间的关系是由大到小,即父子关系,它们之间关系形成一个树状的结构,它们的实现类都实现了Container接口。

总结

如果Apache、Nginx、Tomcat打一局LOL,Apache和Nginx像是冲在最前面的英雄。而Tomcat攻击性能弱,它主要负责打辅助,奶前面的英雄。

Nginx并发性好,CPU、内存占用低。但如果rewrite频繁,那还是选择Apache好一些,Apache在处理动态请求更有优势。

以上个人浅见,欢迎批评指正。

认同我的看法,请点个赞再走,感谢!

喜欢我的,请关注我,再次感谢!

关于nginx反向代理tomcat到此分享完毕,希望能帮助到您。

最新文章