package com.nginx.controllers;import com.nginx.utils.Log4jUtils;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;@Controller@RequestMapping(\"大众/test\"大众)public class TestOne { @RequestMapping(\公众/getname\"大众) public void test(@RequestParam(value = \公众name\"大众) String name) { //用来记录获取的参数name,可以通过查看日志进行确认 Log4jUtils.getLogger().info(\"大众my name is\"大众 + name); }}1234567891011121314151617
Log4jUtils.java
package com.nginx.utils;import org.apache.log4j.Logger;public class Log4jUtils { private static final Logger logger = Logger.getLogger(Logger.class); public static Logger getLogger() { return logger; }}12345678910111213 这里大略做了两个的demo程序,做相应的测试,将项目打成war包后上传至Linux做事器,移动到tomcat/webapps中,tomcat进行热支配 先测试当前的tomcat是否能正常运行,由于没有做差异页面,就直接看日志来判断了123
如图:以轮询办法进行访问8080和8081监听的tomcat 上述办法是get要求进行的测试,我们来试试post1234<!DOCTYPE html><html><body><form action=\公众http://123.207.85.242/tomcat/nginx/test/getname\"大众 method=\"大众post\"大众> <input type=\"大众text\"大众 name=\公众name\公众> <input type=\"大众submit\"大众 value=\公众提交\公众></form></body></html>123456789测试结果依旧可以正常吸收参数,这里就不贴图了12二、静态动态资源分离
现在试试直接访问12http://ip/tomcat1我们会直接跳转到tomcat的主页面,如果检索tomcat.png的话12http://ip/tomcat/tomcat.png1可以直接检索到tomcat.png,它是来自tomcat做事器的资源,如果须要检索nginx的静态资源,可以利用12http://ip/tomcat.png1 这样我们的资源就来自于nginx.conf文件中配置的关于静态资源的访问路径了,为了证明此事资源来自于nginx,我考试测验将8080端口的tomcat/webapps/ROOT/tomcat.png更名为tomcat1.png,然后考试测验访问http://ip/tomcat1.png访问成功,这时候如果刷新http://ip/tomcat/访问tomcat主页的时候会创造图标会在涌现和不涌现之间轮转,缘故原由便是这里要求了tomcat做事器本身去拿资源,tomcat:8080的图片名被变动,如果代理访问的做事器恰好是tomcat:8080的话,它是找不到tomcat.png的,当然轮转到tomcat:8081时候,图片还是会涌现滴12三、Nginx事情模式
如图nginx启动后会有两个进程 如果你将nginx.conf的123worker_processes 1;变动为worker_processes 2; 1那么涌现的便是12
那我们来说说master和worker进程分别的是干什么的,从pid来看,matser的父进程是init进程,而worker的父进程都是master,这里就很故意思了,那nginx这两个进程都到底是干嘛的嘞??? 感谢baidu与google的强大,对付疑问的阐明很清楚 原地址:http://blog.csdn.net/hguisu/article/details/8930668感兴趣的同学可以看一看,这里只大略总结一下1234567master进程
紧张用来管理worker进程,包含:吸收来自外界的旗子暗记,向各worker进程发送旗子暗记,监控worker进程的运行状态,当worker进程退出后(非常情形下),会自动重新启动新的worker进程。 master的平滑重启很故意思,master只卖力吸收外界旗子暗记,那么当我们变动了nginx.conf文件须要重新启动nginx时候怎么办????只须要通过kill向master进程发送旗子暗记就行了。比如kill -HUP pid,这时候master并不会干掉自己所有的worker然后自尽,而是重新加载nginx.conf后,重新启动一批worker,在这之后的要求全部由新的worker进行处理,而老的worker也并不是立即终止,而是在运行完当前的要求后,被终止掉,接下来的要求就全部交给新的worker了,当然这个办法后来被改成了123nginx -s reload1这个命令重新加载配置和上面的略有不一样,其会新启动一个nginx然后向Master发送旗子暗记,当然接下来就和上面的过程同等了12worker进程
而基本的网络事宜,则是放在worker进程中来处理了。多个worker进程之间是对等的,他们同等竞争来自客户真个要求,各进程相互之间是独立的。一个要求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的要求。worker进程的个数是可以设置的,一样平常我们会设置与机器cpu核数同等,这里面的缘故原由与nginx的进程模型以及事宜处理模型是分不开的。 那么worker是怎么做的呢,worker从master fork出来后,由master进行监听端口,当有相应的连接来之后,由worker争抢accept_mutex互斥锁,同一时候此要求只能由一个worker争抢成功,并进行连接的读取、解析、处理然后断开连接着整体是Nginx的事情的大致事理,Nginx依旧有很多细节和设计值得去穷究学习,本篇博客先总结到此,后续有了更深入的理解,也会