1. 程式人生 > 實用技巧 >windows下使用nginx配置tomcat叢集

windows下使用nginx配置tomcat叢集

一、nginx介紹

Nginx是一款高效能的http 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。官方測試nginx能夠支支撐5萬併發連結,並且cpu、記憶體等資源消耗卻非常低,執行非常穩定。

應用場景:

1、http伺服器。Nginx可以獨立提供http服務。可以做網頁靜態伺服器。

2、虛擬主機。可以實現在一臺伺服器虛擬出多個網站。例如個人網站使用的虛擬主機。

3、反向代理,負載均衡。當網站的訪問量達到一定程度後,單臺伺服器不能滿足使用者的請求時,需要用多臺伺服器叢集可以使用nginx做反向代理。並且多臺伺服器可以平均分擔負載,不會因為某臺伺服器負載高宕機而某臺伺服器閒置的情況。

二、安裝nginx

由於我們本篇文章是在windows下使用nginx代理,安裝比較簡單,直接下載壓縮包解壓即可,百度雲連結。注意:解壓的路徑不要包含中文,要不然啟動會報錯,例如我的nginx安裝目錄在:D:\SextupleSpace\nginx-1.8.0

安裝完成後,現在我們來啟動一下:直接執行nginx.exe即可

啟動視窗一閃而過,如何檢視是否啟動成功呢?我們開啟工作管理員,在程序一欄可以看到兩個nginx服務在執行說明啟動成功。

現在我們在瀏覽器訪問nginx,輸入localhost即可,如果出現下面的頁面說明成功了。

三、建立web專案

我們使用eclispe,右鍵new-----other-----maven----mavenproject

跳過骨架選擇,勾上Createa simple project

打包方式選擇war,我們的專案名稱是com-neu-test ,然後點選完成即可。

開啟pom檔案,我們需要指定依賴的jar包和java的編譯環境,pom檔案新增如下內容:

  1. <properties>
  2. <jstl.version>1.2</jstl.version>
  3. <servlet-api.version>2.5</servlet-api.version>
  4. <jsp-api.version>2.0</jsp-api.version>
  5. </properties>
  6. <!-- 設定依賴的jar包 -->
  7. <dependencies>
  8. <!-- JSP相關 -->
  9. <dependency>
  10. <groupId>jstl</groupId>
  11. <artifactId>jstl</artifactId>
  12. <version>${jstl.version}</version>
  13. </dependency>
  14. <dependency>
  15. <groupId>javax.servlet</groupId>
  16. <artifactId>servlet-api</artifactId>
  17. <version>${servlet-api.version}</version>
  18. <scope>provided</scope>
  19. </dependency>
  20. <dependency>
  21. <groupId>javax.servlet</groupId>
  22. <artifactId>jsp-api</artifactId>
  23. <version>${jsp-api.version}</version>
  24. <scope>provided</scope>
  25. </dependency>
  26. </dependencies>
  27. <build>
  28. <plugins>
  29. <!-- java編譯外掛 -->
  30. <plugin>
  31. <groupId>org.apache.maven.plugins</groupId>
  32. <artifactId>maven-compiler-plugin</artifactId>
  33. <version>3.2</version>
  34. <configuration>
  35. <source>1.7</source>
  36. <target>1.7</target>
  37. <encoding>UTF-8</encoding>
  38. </configuration>
  39. </plugin>
  40. </plugins>
  41. </build>

然後在src/main/webapp下建立WEB-INF目錄,在此目錄下建立web.xml。並且在webapps下我們建立一個index.jsp

web.xml檔案內容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  5. <welcome-file-list>
  6. <welcome-file>index.html</welcome-file>
  7. <welcome-file>index.htm</welcome-file>
  8. <welcome-file>index.jsp</welcome-file>
  9. <welcome-file>default.html</welcome-file>
  10. <welcome-file>default.htm</welcome-file>
  11. <welcome-file>default.jsp</welcome-file>
  12. </welcome-file-list>
  13. </web-app>

index.jsp頁面內容如下:

  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <title>首頁</title>
  7. </head>
  8. <body>
  9. <h1>hello! test1</h1>
  10. </body>
  11. </html>

現在,我們把專案安裝一下,右鍵專案,選擇Runas ,maveninstall 。

四、部署專案到tomcat

首先我們把web工程打包成war。右鍵專案,選擇Export ,然後web-----WARfile -----next-----Browse(選擇儲存的目錄),為了方便我們儲存到桌面即可,然後選擇完成。

因為我們是需要搭建tomcat叢集,所以我們至少需要兩個tomcat,我們把tomcat再複製一份就行

這個時候兩個tomcat的埠還是一樣的,我問需要修改其中一個tomcat的埠,那個都行。例如我們修改副本那個tomcat,進入conf目錄,編輯server.xml,修改以下三處即可(看行號)。

原來這三處的埠分別是8005,8080,8009,我們都在此基礎上加1。然後把剛才打包的com-neu-test.war分別複製到兩個tomcat的webapps目錄下即可。然後啟動兩個tomcat,執行tomcat的bin目錄下的startup.bat檔案,把兩個tomcat都啟動後,在瀏覽器分別訪問localhost:8080/com-neu-test和localhost:8081/com-neu-test都能夠看到我們的index.jsp

五、使用nginx代理

剛開始的時候我們介紹了,nginx可以作為代理伺服器使用,當我們的專案訪問量比較大的時候,一個伺服器的壓力就可能比較大了,那麼我們就需要把相同的專案部署到多臺伺服器上,讓nginx去代理我們的tomcat,此時我們只需要訪問nginx,讓nginx去選擇應該請求哪臺伺服器(其實就是訪問哪個tomcat)。為了讓我們直觀的看到客戶端訪問的確實是不同的tomcat,我們把其中一個tomcat下webapps目錄下的web專案的index.jsp檔案改一下,改哪個都行。

把頁面內容修改為:<h1>hello! test2</h1>,然後儲存。把兩個tomcat都關閉,然後把兩個tomcat的webapps下的war包刪除。進入nginx-1.8.0\conf目錄,開啟nginx.conf檔案,我們需要配置一些內容。

在http節點新增如下內容:

  1. upstream server_test{
  2. server 127.0.0.1:8080 weight=1;
  3. server 127.0.0.1:8081 weight=2;
  4. }

在server節點下面的location/節點新增如下內容:

proxy_pass http://server_test;

server_test相當於是服務的名稱,裡面是代理的兩個tomcat,當然裡面的節點可以繼續新增,目前我們的叢集只有兩個節點,埠分別是剛才我們設定的8080和8081。weight這個值是設定權重,例如可能127:0.0.1:8081所在的這臺伺服器可能配置,效能方面比127:0.0.1:8080所在的伺服器要好,那麼我們就設定讓它被訪問的次數多點。proxy_pass http://server_test就相當於我們上面定義的那個兩個節點,讓nginx去代理它們。

現在重啟兩個tomcat,然後再啟動nginx.exe,如果之前nginx啟動過了,需要在工作管理員把那兩個nginx程序結束,然後再啟動nginx,要不然配置檔案不生效。由於nginx監聽的是80埠,現在我們只需要在瀏覽器輸入:localhost/com-net-test,然後一直重新整理頁面,就會發現頁面的內容一會是hello!test1,一會是hello!test2,說明tomcat叢集搭建成功!

Windows下Nginx的啟動、停止等命令

在Windows下使用Nginx,我們需要掌握一些基本的操作命令,比如:啟動、停止Nginx服務,重新載入Nginx等,下面我就進行一些簡單的介紹。
1、啟動:

C:\server\nginx-1.0.2>start nginx

C:\server\nginx-1.0.2>nginx.exe

注:建議使用第一種,第二種會使你的cmd視窗一直處於執行中,不能進行其他命令操作。

2、停止:

C:\server\nginx-1.0.2>nginx.exe -s stop

C:\server\nginx-1.0.2>nginx.exe -s quit


注:stop是快速停止nginx,可能並不儲存相關資訊;quit是完整有序的停止nginx,並儲存相關資訊。

3、重新載入Nginx:

C:\server\nginx-1.0.2>nginx.exe -s reload

當配置資訊修改,需要重新載入這些配置時使用此命令。

4、重新開啟日誌檔案:

C:\server\nginx-1.0.2>nginx.exe -s reopen

5、檢視Nginx版本:

C:\server\nginx-1.0.2>nginx -v

tomcat9部署到nginx,不能通過nginx訪問到tomcat

1.Nginx的配置檔案

2.訪問的時候出現錯誤

3.可以看到tomcat9提示server_list是無效的

4.解決辦法

5特別注意

為nginx配置的伺服器必須是一樣的,比如tomcat7和tomcat9配置到裡面就會出錯