Nginx + Tomcat 反向代理 如何在高效的在一臺伺服器部署多個站點
首先我們需要安裝好Nginx、jdk、Tomcat,安裝方法已經在 上一篇 說過了,本篇不再贅述。
下來看一下我們的需求,我這裡有三個網站專案工程需要部署(依次對應著三個域名),提供一臺Linux伺服器,要實現訪問對應的域名跳轉到對應的網站。
下來我們看一下為了解決這個問題,我所設計的體系架構圖:
這裡我們假定圖中Linux伺服器公網ip為192.168.2.100,然後假定要在這臺伺服器搭建這麼三個站點:www.nginxtest.NET、admin.nginxtest.Net、app.nginxtest.net。
好了,下來我們具體配置一下:
1.配置Nginx反向代理
我們還是先連線SSH,然後進行下面操作(一般不建議修改預設主配置檔案nginx.conf,所以我們新建負載均衡配置檔案fxdl.conf,保證伺服器安全,如下):
$ ssh
cd /usr/local/nginx/conf
touch fxdl.conf //建立代理配置檔案
vi fxdl.conf //用vi編輯器開啟檔案,然後按鍵盤的i
注意:vi編輯器中,鍵盤按 i 進入 INSERT 狀態,按 Esc 退出 INSERT 狀態。
然後輸入以下配置程式碼(域名部分自定義更改成你們自己的域名,註釋部分則按需開啟):
#設定低許可權使用者,為了安全而設定的
user nobody;
工作衍生程序數
worker_processes 4;
設定錯誤檔案存放路徑
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
設定pid存放路徑(pid是控制系統中重要檔案)
pid logs/nginx.pid;
設定最大連線數
events{
worker_connections 1024;
}
http {
#用來設定日誌格式
log_format main ‘
‘
#用來指定日誌檔案的存放路徑
access_log /data/wwwlogs/access_nginx.log main;
#開啟高效檔案傳輸模式
sendfile on;
#防止網路阻塞
tcp_nopush on;
#防止網路阻塞
tcp_nodelay on;
#長連線超時時間,單位是秒
keepalive_timeout 65;
#散列表的衝突率,預設1024,越大則記憶體消耗更多,但雜湊key的衝突率會降低,檢索速度就更快
types_hash_max_size 2048;
#副檔名與檔案型別對映表
include /usr/local/nginx/conf/mime.types;
#預設檔案型別
default_type application/octet-stream;
#include /etc/nginx/conf.d/*.conf;
#主要是用於設定一組可以在proxy_pass和fastcgi_pass指令中使用額代理伺服器,預設負載均衡方式為輪詢
upstream tomcat_client {
server localhost:8080;
}
#開啟gzip壓縮,開啟後,訪問網頁會自動壓縮
#gzip on;
#指定伺服器的名稱和引數
server {
listen 80;
server_name app.nginxtest.net;
location / {
proxy_pass http://tomcat_client;
proxy_redirect default;
#設定代理
proxy_set_header Host
}
}
server {
listen 80;
server_name admin.nginxtest.net;
location / {
proxy_pass http://tomcat_client;
proxy_redirect default;
proxy_set_header Host
}
}
server {
listen 80;
server_name www.nginxtest.net;
location / {
proxy_pass http://tomcat_client;
proxy_redirect default;
proxy_set_header Host
}
location = / {
#判斷是否為手機移動端
if ($http_user_agent ~* ‘(iPhone|ipod|iPad|Android|Windows Phone|Mobile|Nokia)’) {
rewrite . http://www.nginxtest.net/phone break;
}
rewrite . http://www.nginxtest.net/pc break;
}
}
}
好了就是這麼簡單,Nginx反向代理配置完畢。下來配置Tomcat:
2.配置Tomcat部署多個站點
$ ssh [email protected] //SSH連線
cd /usr/local/tomcat
cp /usr/local/tomcat/conf/server.xml /usr/local/tomcat/conf/server.xml_bk //備份server.xml原檔案
vi server.xml //用vi編輯器開啟檔案,然後按鍵盤的i
我們編輯server.xml,Engine節點下新增以下HOST節點(節點中的域名和站點工程目錄需要自定義修改為你們自己的):
<Host name="www.nginxtest.net" unpackWARs="true" autoDeploy="true"
xmlValidation=”false” xmlNamespaceAware=”false”>