您的位置:首页 > 运维架构 > Nginx

Nginx学习---用不同域名访问同一台机器的不同项目

2016-03-09 19:33 876 查看
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