Tomcat

Nginx在windows环境下的安装与简单配置

纵饮孤独 提交于 2020-12-25 17:21:29
每天学习一点点 编程PDF电子书、视频教程免费下载: http://www.shitanlife.com/code 一. 下载并安装Nginx 去 Nginx官网下载 我这里选取 nginx/Windows-1.10.3 版本,下载后解压出来即可,解压出来的路径不能含有中文 我解压后将其放置的路径如下 二、开始运行 在当前目录下按住shift+鼠标右键,选择“在此处打开命令窗口”,然后输入start nginx 此时,就可以进入浏览器输入访问地址,http://127.0.0.1/或者http://localhost/即可访问 三、配置文件讲解 核心配置文件就是nginx.conf,该文件位于conf目录下,大部分情况下我们就是修改该文件的配置 该文件的原始配置如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90

软件架构-nginx详解上

帅比萌擦擦* 提交于 2020-12-25 11:50:29
今天说说nginx, 其实有老铁比较奇怪,nginx不是运维来搞的吗?确实是的,大部分情况下,公司比较大的话,存在运维的话,这个锅肯定是运维来做的。但是现在有个趋势叫devops之前我也说过,开发运维一体化,开发也要懂一定的运维知识。在一些互联网的创业公司刚开始技术的工种,并不是分的那么清楚,可能都要会的。环境的搭建,运维,框架搭建,开发都必须拿得下来。 源码:github.com/limingios/netFuture/tree/master/nginx Nginx服务搭建与基础演示(一) Nginx 官网 nginx.org/ 介绍 Nginx是一个轻量级、高性能、稳定性高、并发性好的HTTP和反向代理服务器。也是由于其的特性,其应用非常广。 历史 由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。 理解代理的概念 1.正向代理:某些情况下,代理我们用户去访问服务器,需要用户手动的设置代理服务器的ip和端口号。 2.反向代理:是用来代理服务器的,代理我们要访问的目标服务器。代理服务器接受请求

大家会不会通过网址访问的Servlet 实现呢?

∥☆過路亽.° 提交于 2020-12-25 08:26:09
Servlet 是 Server Applet 的缩写,是服务端小程序的意思。使用 Java 语言编写的服务器端程序,主要功能在于交互式地浏览和生成数据,生成动态Web内容,Servlet 主要运行在服务器端,并由服务器调用执行,是一种按照 Servlet 标准来开发的类。 是 SUN 公司提供的一门用于开发动态 Web 资源的技术。(言外之意:要实现 web 开发,需要实现 Servlet 标准)   Servlet 本质上也是 Java 类,但要遵循 Servlet 规范进行编写,没有 main() 方法,它的创建、使用、销毁都由 Servlet 容器进行管理(如 Tomcat)。(言外之意:写自己的类,不用写 main 方法,别人自动调用)   Servlet 是和 HTTP 协议是紧密联系的,其可以处理 HTTP 协议相关的所有内容。这也是 Servlet 应用广泛的原因之一。   提供了 Servlet 功能的服务器,叫做 Servlet 容器,其常见容器有很多,如 Tomcat, Jetty, WebLogic Server, WebSphere, JBoss 等等。 Servlet实现方式 创建动态 web 项目 新建类 实现 Servlet 规范 重写 service 方法 配置 web.xml 发布项目 启动项目 访问并查看结果 案例实操 1)创建动态 web

Nginx ServerName 配置说明

别说谁变了你拦得住时间么 提交于 2020-12-24 23:47:33
Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了。 下面我就来说说server_name的使用吧: server_name的匹配顺序 Nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为: 1、准确的server_name匹配,例如: server { listen 80 ; server_name ssdr. info www.ssdr. info ; ... } 2、以*通配符开始的字符串: server { listen 80 ; server_name *.ssdr. info ; ... } 3、以*通配符结束的字符串: server { listen 80 ; server_name www. * ; ... } 4、匹配正则表达式: server { listen 80 ; server_name ~^(?.+ )\.howtocn\.org$; ... } Nginx将按照1,2,3,4的顺序对server name进行匹配,只有有一项匹配以后就会停止搜索,所以我们在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。 server

记录一次线上内存溢出,server.tomcat.max-http-header-size导致

僤鯓⒐⒋嵵緔 提交于 2020-12-24 18:36:55
不是谷歌找不到,是搜索的方式不对 文件服务挂了,有点不可思议,线上内存设置的堆大小为16G,应该不会出现这种情况的,查看日志,发现在10:37到10:45文件挂掉这期间,发现一直再报org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space 本能觉得是内存泄漏了,不过没办法,线上并没有打印GC日志。涉及文件上传下载的一共就5个接口,开始查看代码压测,并没有复现。 晚上突然想起来线上另外两台服务器并没有挂掉,也应该存在同样的问题,随即去拿两台服务的内存快照,命令如下 jmap -dump:format=b,file=/root/heap.hprof 14714 有点大,两台的快照将近20G,用MAT进行分析,分析结果如下图: 根据报告发现byte[]和Http11OutputBuffer,看Http11OutputBuffer的名字感觉里面就是byte[],跟踪一下Http11OutputBuffer 发现是headerBuffer的问题应该是响应头缓冲区的问题,看下内容,是响应头 在网上查了下应该是配置的问题,去配置文件里找发现有一个配置有点相似

『互联网架构』软件架构-nginx(下)

无人久伴 提交于 2020-12-24 15:02:23
今天继续说说nginx,之前只是介绍了nginx的配置,这次主要说说nginx的生产环境的配置,我们在生产中是如何配置的。源码: https://github.com/limingios/netFuture/tree/master/nginx 系统类型 IP地址 节点角色 CPU Memory Hostname Centos7 192.168.66.110 nginx 1 2G nginx Centos7 192.168.66.111 tomcat 1 2G tomcat1 Centos7 192.168.66.112 tomcat 1 2G tomcat2 Nginx如何实现高速缓存(一) 场景介绍 假设在做一个大型项目,面向全国的,公司对架构师的要求是做到700+的QPS,如何去处理。 介绍几个开发网站需要了解的关键字 响应时间(RT) 响应时间是指系统对请求作出响应的时间。 吞吐量(TPS) 系统在单位时间内处理请求的数量 并发用户数 系统可以同时承载的正常使用系统功能的用户的数量 QPS每秒查询率 对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准 了解下一个网站一般的实际html大小 打开一个技术博客:idig8.com 查看源代码 保存在文件大小:45kb,700QPS/s = 700*45/1024 = 30MB,单个页面如果700QPS的话需要吐出来30MB

Servlet 入门教程

落爺英雄遲暮 提交于 2020-12-24 09:34:10
Servlet 入门教程 总结 《Servlet、JSP 和 Spring MVC 初学指南》 一书。 1. HTTP 协议 HTTP 第一个版本是0.9,之后是HTTP1.0,现在是HTTP1.1,Web 服务器7x24 不间断运行,并等待HTTP客户端(浏览器)来连接并请求资源。由客户端发起请求,服务器不会主动连接客户端。 1.1 URL 和 URI 的区别 URL = host 地址 + URI,如 http://example.com/test/index.html,host 地址是http://example.com,URI 则是 /test/index.html。可以理解为URL是在互联中请求的地址,URI 则是资源路径。 1.2 HTTP 请求 一个HTTP请求包含三部分内容: ①. 方法-URI-协议/版本 ②. 请求头信息 ③. 请求正文 如下为一个具体的示例: POST example/default.jsp HTTP/1.1 Accept: text/plain; text/html Accept-Language: en-us Connection: Keep-Alive … lastName=Blanks&firstName=Mike 请求的第一行即是方法-URI-协议/版本,请求方法为post,URI 为 /example/default.jsp

Shiro+Redis实现Tomcat集群Session共享

一个人想着一个人 提交于 2020-12-24 09:04:09
一、背景   当我们使用了nginx做项目集群以后,就会出现一个很严重的问题亟待解决,那就是:tomcat集群之间如何实现session共享的问题,如果这个问题不解决,就会出现登陆过后再次请求资源依旧需要登陆的问题。这篇文章我们就解决这个问题。 二、实现步骤 说明:本篇是在spring+shiro集成的基础上进行改进的,如果不知道spring和shiro怎么集成,请移步:spring集成shiro做登陆认证 1.在pom.xml中添加shiro-redis和jedis的依赖 2.首先我们需要对redis进行集成,在resources下新建config.properties 3.在resources/spring文件夹下新建spring-redis.xml来集成redis操作客户端 4.添加redisClient.java作为访问redis的客户端 5.接着,我们对spring-shiro.xml做如下修改(红色标记的部分) 6.spring.xml做如下修改 到此我们就完了shiro+redis实现session共享的问题,其实也很简单,其中的实现逻辑也很简单,就是shiro的拦截器会首先去redis里面获取session,作为当本次请求的session. 其他代码以及简单测试代码不再贴出,给出github地址: https://github.com/hafizzhang

基于netty手写Tomcat

回眸只為那壹抹淺笑 提交于 2020-12-24 06:05:19
作者: MovW 原文:http://suo.im/5Ar7t8 netty 简介 Netty一个基于NIO的客户、服务器端的编程框架 1.环境准备 maven依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.42.Final</version> </dependency> 12345 RequestMethodEnum 请求方式 public enum RequestMethodEnum { GET( "GET" ), POST( "POST" ); public String code; RequestMethodEnum(String code) { this.code=code; }}12345678 ParentServlet 父类servlet public abstract class ParentServlet { public void service(ParentRequest request, ParentResponse response) throws Exception { //service 方法决定调用doGet、doPost; if (RequestMethodEnum.GET.code

apache性能调优

独自空忆成欢 提交于 2020-12-24 02:32:07
一、总结前一天的学习 在前两天的学习中我们知道、了解并掌握了Web Server结合App Server实现单向Https的这样的一个架构。这个架构是一个非常基础的J2ee工程上线布署时的一种架构。在前两天的教程中,还讲述了Http服务 器、App Server的最基本安全配置(包括单向https的实现), 它只是避免了用户可以通过浏览器侵入我们的Web访问器或者能够通过Web浏览器来查询我们的Web目录结构及其目录内的文件与相关内容,这种入侵我们把 它称为: Directory traversal,当然我们只是实现了最基本的防范Directory traversal的手段,在日后的Security课程中将会详细地去擅述完整的Web Security的相关理论。 从今天起我们将继续在原有的这种Apache+Tomat的架构上,去论述如何在性能及Performance上优化这个架构,因此这两天的课程在有些人看来,可能会有些“枯燥”,所以我在此给大家打个招呼: 这 两天的课程论述的是如何在不改动代码与SQL语句的前提下,如何去改善和提高web server与app server的性能,千万不要小觑这一内容,它可以让你在不改动代码的情况下得到10-20倍以上的性能提高,网上有其它的大牛们写过一篇文章叫 “Tomcat如何支持到1000个用户”,经本人经过几个重大工程的实践