Nginx學習---用不同域名訪問同一臺機器的不同專案
Nginx是一款面向效能設計的HTTP伺服器,相較於Apache、lighttpd具有佔有記憶體少,穩定性高等優勢。與舊版本(<=2.2)的Apache不同,nginx不採用每客戶機一執行緒的設計模型,而是充分使用非同步邏輯,削減了上下文排程開銷,所以併發服務能力更強。整體採用模組化設計,有豐富的模組庫和第三方模組庫,配置靈活。 在Linux作業系統下,nginx使用epoll事件模型,得益於此,nginx在Linux作業系統下效率相當高。同時Nginx在OpenBSD或FreeBSD作業系統上採用類似於epoll的高效事件模型kqueue。(來自wikipedia)
我也才接觸
難得開虛擬機器了,就直接用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埠