Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在Linux作業系統下,nginx使用epoll事件模型,得益於此,nginx在Linux作業系統下效率相當高。同時Nginx在OpenBSD或FreeBSD作業系統上採用類似於epoll的高效事件模型kqueue。(来自wikipedia)
我也才接触Nginx不久,今天抽空使用了下,感觉非常好,很简单就可以解决同一台机器同时跑两个或者多个项目,而且都通过域名从80端口走。
难得开虚拟机了,就直接用Windows版本来做测试。
首先我修改了hosts,添加了下面一行:
127.0.0.1 www.ergouge.com www.ergouge.net
即用两个不同的域名来访问不同的项目,用tomcat7来作为动态资源服务器,用Nginx作为静态资源的服务器。
下载好nginx-1.8.1,在C盘根目录解压,然后在主目录下新建data目录,用来存放静态资源,本次测试只两张图片作为测试,因此就在data目录里面新建images目录,然后拷贝进去两张图片(1.gif,2.jpg)。
接着在tomcat7主目录下的webapp目录中新建两个项目文件夹testnginx1和testnginx2,里面就直接放简单的一个html文件,也不用动态jsp了,两个index.hmtl分别如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Test Nginx</title>
</head>
<body style="text-align:center;">
测试NGINX,不同域名映射到同一台服务器的不同项目中。此页面时www.ergouge.com域名。
<div style="margin: 0 auto;"><img src="/images/2.jpg" ></div>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Test Nginx</title>
</head>
<body style="text-align:center;">
测试NGINX,不同域名映射到同一台服务器的不同项目中。此页面时www.ergouge.net域名。
<div style="margin: 0 auto;"><img src="/images/1.gif" ></div>
</body>
</html>
接下去就是nginx配置文件了,具体配置的含义略过,网上有很多详细解析每条指令含义的文章。
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream ergouge_web_server {
server localhost:8080;
}
server {
listen 80;
server_name www.ergouge.com;
location / {
proxy_pass http://ergouge_web_server/testnginx1/;
}
location ~ \.(gif|jpg|png)$ {
root data;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name www.ergouge.net;
location / {
proxy_pass http://ergouge_web_server/testnginx2/;
}
location ~ \.(gif|jpg|png)$ {
root data;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Windows下启动nginx的方法有三种
* 双击nginx.exe
* cmd到nginx主目录,输入nginx,回车
* cmd到nginx主目录,输入start nginx
建议选择第三种,这样控制台不会被锁定,然后还有些命令:
- stop — fast shutdown
- quit — graceful shutdown
- reload — reloading the configuration file
- reopen — reopening the log files
最后做测试,启动tomcat,确认tomcat启动无误,然后启动nginx
在浏览器中输入www.ergouge.com:
在浏览器中输入www.ergouge.net:
实际应用中,可以将两个域名都解析到同一台服务器上,然后如此配置,即可实现同一台服务器部署两个项目,都走80端口
本文介绍如何使用Nginx与Tomcat集成,实现单机多项目的部署。通过配置Nginx,使得不同域名可以指向同一台服务器上的不同项目,并通过80端口访问。文中还提供了具体的配置步骤及示例。

2535

被折叠的 条评论
为什么被折叠?



