首頁 後端開發 php教程 Nginx+tomcat設定集群

Nginx+tomcat設定集群

Aug 08, 2016 am 09:20 AM
nbsp nginx quot tomcat

本文轉載自:http://os.51cto.com/art/201111/304608.htm

本文介紹了透過在Windows xp和ubuntu兩種環境下nginx和tomcat的叢集配置,最終實現負載平衡。

AD:

開發的應用採用F5負載平衡交換機,F5將請求轉發給5台hp unix伺服器,每台伺服器有多個webserver實例,對外提供web服務和socket等介面服務。之初,曾有個小小的疑問為何不採用開源的apache、Nginx軟體負載,F5設備動輒幾十萬,價格昂貴?自己一個比較幼稚的問題,後續明白:F5是操作於IOS網路模型的傳輸層,Nginx、apache是​​基於http反向代理方式,位於ISO模型的第七層應用層。直白些就是TCP UDP 和http協定的差別,Nginx不能為基於TCP協定的應用提供負載平衡。

了解了二者之間的區別於應用場景,對Nginx產生濃厚的興趣,閱讀張宴的(這個85年的小伙子年輕有為羨慕+妒忌),搞明白了大致原理和配置,Ubuntu10.10,window下對Nginx+tomcat負載平衡做了配置嘗試,將全部請求轉發到tomcat,並未做靜態,動態分開,圖片防盜鍊等配置。

Nginx 介紹

Nginx (發音同 engine x)是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協定下發行。其特點是佔有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好.目前中國大陸使用nginx網站用戶有:新浪、網易、 騰訊,另外知名的微網志Plurk也使用nginx。
上面的全是Nginx介紹基本上是廢話,下面轉入正題,圖文結合展示基本配置,首先是window環境、其次是Ubuntu環境(Vbox虛擬)。

Window xp環境:Nginx+Tomcat6
1、下載地址
http://nginx.org/en/download.html ,這裡我們推薦下載穩定版(stable versions),本文採用nginx-0.8. 20。

2、目錄結構
      Nginx-
               
               |_                  暫存檔案目錄
               |_  html 靜態頁目錄
             nginx.exe 主程式
window下安裝Nginx極為簡單,解壓縮到一個無空格的英文目錄即可(個人習慣,擔心中文出問題),雙擊nginx啟動,這裡我安裝到:D:server目錄,下面涉及到的tomcat也安裝在此目錄。
DOS環境啟動
若果想停止nginx,dos環境運行指令:nginx -s stop


3、nginx.conf設定

Nginx設定檔預設在conf目錄,主要設定檔為nginx.conf,我們安裝在D:servernginx-0.8.20、預設主設定檔為D:servernginx-0.8.20nginx.conf。下面是nginx作為前端反向代理伺服器的設定。
Nginx.conf程式碼

  1. #Nginx所使用使用者和群組,window下不指定 
  2. #user  niumd niumd; 
  3.  
  4. #工作的子進程數(通常等於CPU 但 ;
  5.   #錯誤日誌存放路徑 
  6. #error_log  logs/error.log; 
  7. #error_log  logs/error.log  notice;
  8.  
  9. #指定pid存放文件 
  10. pid        logs/nginx.pid; 
  11.  
  12. events { 
  13.     #使用網路機型模型建議使用建議使用內不符
  14.     #use epoll; 
  15.      
  16.     #允許最大連結數 
  17.   
  18.  
  19. http { 
  20.     include       mime.types; 
  21.             #定義日誌格式 
  22.     #log_format  main 
  23. '$remote_addr - $remote_user [$time_local] $request '$remote_addr - $remote_user [$time_local] $request '
  24. '
  25.     #                 
  26. '"$status" $body_bytes_sent "$http_referer" '
  27. '"$status" $body_bytes_sent "$http_referer" '
  28.  
  29.     #                 
  30. '"$http_user_agent" "$http_x_forwarded_for"'
  31. '"$http_user_agent" "$http_x_forwarded_for"'
  32. '"$http_user_agent" "$http_x_forwarded_for"'
  33.  
  34.     #access_log  off; 
  35.     access_log  logs/access.log;  🠎    client_body_timeout    3m; 
  36.     send_timeout                large_client_header_buffers 
  37. 4
  38. 4k; 
  39.  
  40.     sendfile        on; 
  41.     tcp_nopush    
  42.  
  43.     #keepalive_timeout 
  44. 75
  45. 20
  46.  
  47.     include    gzip.conf; 
  48.     upstream localhost { 
  49.     upstream localhost { 
  50.     upstream localhost { 
  51.   
  52.       #同一機器在多網情況下,路由切換,ip可能不同 
  53.       #ip_hash;  
  54.     server localhost:
  55. 18080
  56.      } 
  57.  
  58.     server { 
  59.  
  60.     server
  61.             listen      
  62. 80
  63.                  location/ { 
  64.                                proxy_send_timeout     
  65. 30
  66. 🎠   
  67. 30
  68.                      } 
  69.              
  70.    } 
  71. } _redirect          off; 
  72. proxy_set_header        Host $host;  pro片_set_header 
  73. proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for; 
  74. client_max_body_size    10m;
  75. client_max_body_size    10m; connect_timeout  
  76. 300
  77. proxy_send_timeout     
  78. 300
  79. ize       4k; 

proxy_buffers

4

32k;  proxy_busy_buffers_size 64k; 

    proxy_temp_file_write_size 64k;
  1. gipzft相關碼
  2. gzip              on; 
  3. gzip_min_length      /plain text/css application/x-javascript;
  4. 4、Tomcat配置
  5. 對於tomcat大家都很熟悉,只需要修改server.xml設定檔即可,這裡我們以apache-tomcat-6.0.14為例,分別在server目錄,解壓縮並命名為:apache-tomcat-6.0.14_1、apache-tomcat-6.0.14_2。 第一個連接埠修改:
  6. Xml程式碼
  7. 第一個連接埠修改:
  8. Xml程式碼
  9.  
  10. port
  11. =
  12. "18006"
  13. shutdown
  14. =
"SHUTDOWN"

>

第二處連接埠修改:
    Xml代碼
  1. +
  2. 隨意設置,別太小--> 
Connector

port=

"18081"

protocol🎠       

connectionTimeout="20000"

  
  1.                redirectPort=
  2. "8443"
  3. /c ector port="8009" protocol="AJP/1.3" redirectPort="8443" />  Engine元素增加jvmRoute屬性:Xml程式碼

    Enginename="Catalina"defaultHost="localhost" cat的連接埠別重複,保證能啟動起來,另一個tomcat配置希捷省略,監聽埠為18080,附件中我們將上傳所有的設定資訊。 5、驗證設定與測試負載平衡
    先測試nginx設定是否正確,測試指令:nginx -t  (預設驗證:confnginx.conf),也可以指定設定檔路徑。

    其次驗證tomcat,啟動兩個tomcat,不出現端口衝突即為成功(tomcat依賴的java等搞“挨踢”的就廢話不說了);

    最後驗證配置負載平衡設置,http:// localhost/ 或http://localhost/index.jsp 。我修改了index.jsp頁面,增加日誌輸出訊息,以便於觀察。注意:左上角小貓頭上的:access tomcat2、access tomcat1。說明訪問了不同的tomcat。 至此window下nginx+tomcat負載平衡配置結束,關於tomcat Session的問題通常是採用memcached,或者採用nginx_upstream_jvm_route ,他是一個 Nginx 的擴展模組,用來實現基於 Cookie 的 Sessvm_route ,他是一個 Nginx 的擴展模組,用來實現基於 Cookie 的 Sessvmion Sticky 的功能。如果tomcat過多不建議session同步,server間互相同步session很耗資源,高並發環境容易造成Session風暴。請依照 自己應用情況合理採納session解決方案。

    Ubuntu10.10環境:Nginx+Tomcat6

    我們下面簡單說下ubuntu10.10下如何安裝設定

    1. en/download.html ,linux版本:nginx-0.8.20.tar.。解壓縮指令:tar -zxvf nginx-0.8.20.tar.gz

    2、編譯安裝NginxNginx依賴一些其他PCRE、openssl(依賴libsslbtu),自己依賴PCRE,只需安裝依賴的openssl,以下我們簡單說下如何安裝PCRE和openssl等

    PCRE下載位址:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

    Shell程式碼


    tar zxvf  pcre-8.01

    .tar.gz 

    cd pcre-

    8.01

     

    cd pcre-8.01

    du make install
    1. openssl透過apt-get install安裝
    2. sudo apt-get install openssl  sudo apt-get install openssl 
    3. sudo apt-get install libssl-dev 
    4. //如缺少其他包,請採用此方法安裝,ubuntu有依賴提示
    5. //如缺少其他包,請採用此方法安裝,ubuntu有依賴提示
    //如缺少其他包,請採用此方法安裝,ubuntu有依賴提示

    來編譯Nginx:
    1. Shell程式碼
    2. #將window共享目錄軟體拷貝到目前工作目錄 

    cp /mnt/fileshare/nginx-

    0.8

     

      #解壓縮軟體包 
    1. tar zxvf nginx-
    2. 0.8.20.tar.gz 
    3.  
    4. cd nginx-
    5. 0.8
    6. .
    7. 20  //編譯源碼,預設使用nobody,指定本機已存在的用戶,組,啟用nginx-statxus功能,啟用系統監控。啟動debug 
    8. sudo ./configure  --user=niumd --group=niumd --with-debug --with-http_stub_status_module  
    9.   
    10.   sudo make  
    11. sudo make install
    12. 編譯安裝正確結束,依照上述windowm.成功後我們對window下nginx.conf少做修改,如下:
    13. Ubuntu nginx.conf程式碼
    14. 與群組
      1.  
      2. #錯誤日誌存放路徑 
      3. #error_log  logs/error.log; 
      4. #error_log  logs/error.log  notice; 
      5. pid        logs/nginx. pid; 
      6.  
      7. events { 
      8.   #使用網路IO模型linux建議epoll,FreeBSD建議採用kqueue 
      9.   數 
      10.     worker_connections 
      11. 2048
      12.  
      13. http { 
      14.     include       mime.types; 
      15.     default_type    #log_format  main 
      16. '$remote_addr - $remote_user [$time_local] $request '
      17.  
      18.     #                 
      19. '"$status" $body_bytes_sent "$http_referer" '
      20. '"$status" $body_bytes_sent "$http_referer" '
      21.  
      22.     #                 
      23. '"$http_user_agent" "$http_x_forwarded_for"'
      24. '"$http_user_agent" "$http_x_forwarded_for"''"$http_user_agent" "$http_x_forwarded_for"'
      25.  
      26.     #access_log  off; 
      27.     access_log  logs/access.log;  ?    client_body_timeout    3m; 
      28.     send_timeout           
      29.     large_client_header_buffers 
      30. 4
      31. 4k; 
      32.  
      33.     sendfile        on;      tcp_nopush    
      34.  
      35.     #keepalive_timeout  75
      36. 20
      37.  
      38.     include    gzip.conf; 
      39.     upstream localhost { 
      40.      #ip_hash 
      41.       #ip_hash; 
      42.       server localhost:
      43. 18081
      44.       server localhost:
      45. 18080
      46.      } 
      47.  
      48.     server {
      49.             listen      
      50. 80
      51.             server_name  localhost;    
      52.  
      53.             location / { 
      54.               proxy_connect_timeout   3
      55.               proxy_send_timeout     
      56. 30
      57.               proxy_read_timeout     
      58. 30
      59.                 proxy_pass http://localhost; 
      60.             } 
      61.               )使用含dow下基本上相同,差異在使用的IO網路模型,linux下建議使用epoll,另外就是運作所使用的使用者和群組;
      62. 3、配置tomcat
      63. 請參考window下配置,完全相同。
      64. 4、啟動停止nginx
      65. ubuntu下啟動nginx與window稍有不同,大致啟動停止方法如下。
      66. Java程式碼
        1. #nginx目錄執行
        2. sbin/nginx
        3. #nginx目錄執行
        4. sbin/nginx
        5. #nginx目錄執行sbin/nginx -c usr/local/nginx8.
        6. 20
        /conf/nginx/conf

        niumd@niumd-laptop:/usr/local/nginx$ pwd 

        /usr/local/nginx 
        1. niumd@niumd-laptop:/usr/local/ usr/local/nginx/conf/nginx.conf 語法沒問題
        2. 設定檔/usr/local/nginx/conf/nginx.conf 測試成功
        3. niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/$ nginx -v
        4. nginx 版本:nginx/
        5. 0.8
        6. .
        7. 20
        8.  
        9. niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx -V  nginx 版本: nginx/0.8.
        10. 20
        11.  
        12. 由 gcc 4.4.3(Ubuntu
        13. 4.4
        14. .3-4ubuntu5)   設定參數: --user=niumd --group=niumd --with-debug --with-http_sub_module  niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx   niumd@niumd-laptop:/usr/local/nginx$ ps -ef|grepginxroot 5%   
        15. 1
        16.  
        17. 0
        18. 22
        19. :
        20. 32
        21. ?        00:00:00 nginx:主流程 sbin/nginx  niumd     5159  5158  022
        22. 32
        23. 02232?        00:00:00 nginx:工作流程  niumd     5161  1577
        24.  
        25. 02232022 00:00:00 grep --color=auto nginx  niumd@niumd-laptop:/usr/local/nginx$  
        26. 我們透過ps  -ef|grep nginx,如下看到結果:
        27. 注意一條:在啟動時【linux是因為我們設定的#允許最大連線數worker_connections  2048,超過linux預設1024的限制。

        停止:kill -訊號類型pid

        nginx/logs目錄下一個nginx。 pid的文件,此文件記錄了每次執行的pid,也可以透過ps指令查詢。

        訊號類型如下:

        描述USR1重新加載載入日誌USER2平滑升級執行程序WINCH從容關閉工作流程鎜QUQUp 以上就介紹了Nginx+tomcat配置配置,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
        訊號類型
        RERM.INT
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

nginx怎麼查版本 nginx怎麼查版本 Apr 14, 2025 am 11:57 AM

可以查詢 Nginx 版本的方法有:使用 nginx -v 命令;查看 nginx.conf 文件中的 version 指令;打開 Nginx 錯誤頁,查看頁面的標題。

nginx怎麼配置雲服務器域名 nginx怎麼配置雲服務器域名 Apr 14, 2025 pm 12:18 PM

在雲服務器上配置 Nginx 域名的方法:創建 A 記錄,指向雲服務器的公共 IP 地址。在 Nginx 配置文件中添加虛擬主機塊,指定偵聽端口、域名和網站根目錄。重啟 Nginx 以應用更改。訪問域名測試配置。其他注意事項:安裝 SSL 證書啟用 HTTPS、確保防火牆允許 80 端口流量、等待 DNS 解析生效。

nginx服務器掛了怎麼辦 nginx服務器掛了怎麼辦 Apr 14, 2025 am 11:42 AM

當 Nginx 服務器宕機時,可執行以下故障排除步驟:檢查 nginx 進程是否正在運行。查看錯誤日誌以獲取錯誤消息。檢查 nginx 配置語法正確性。確保 nginx 具有訪問文件所需的權限。檢查文件描述符打開限制。確認 nginx 正在偵聽正確的端口。添加防火牆規則以允許nginx流量。檢查反向代理設置,包括後端服務器可用性。如需進一步幫助,請聯繫技術支持。

See all articles