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

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分别如下:


<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Test Nginxtitle>
 head>
 <body style="text-align:center;">
   测试NGINX,不同域名映射到同一台服务器的不同项目中。此页面时www.ergouge.com域名。
   <div style="margin: 0 auto;"><img src="/images/2.jpg" >div>
 body>
html>

<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Test Nginxtitle>
 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:
Nginx学习---用不同域名访问同一台机器的不同项目_第1张图片

在浏览器中输入www.ergouge.net:
Nginx学习---用不同域名访问同一台机器的不同项目_第2张图片

实际应用中,可以将两个域名都解析到同一台服务器上,然后如此配置,即可实现同一台服务器部署两个项目,都走80端口

你可能感兴趣的:(Nginx学习---用不同域名访问同一台机器的不同项目)