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 [email protected]             //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 ‘remoteaddr remote_user [timelocal]" request” ’
           ‘status body_bytes_sent “httpreferer http_user_agent" "$http_x_forwarded_for”’;
  #用來指定日誌文件的存放路徑
  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 host;proxysetheaderXRealIP remote_addr;
    }
  }
  server {
    listen 80;
    server_name admin.nginxtest.net;
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      proxy_set_header Host host;proxysetheaderXRealIP remote_addr;
    }
  }
  server {
    listen 80;
    server_name www.nginxtest.net;
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      proxy_set_header Host host;proxysetheaderXRealIP remote_addr;
    }
    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”>
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章