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檔案新增如下內容:
- <properties>
- <jstl.version>1.2</jstl.version>
- <servlet-api.version>2.5</servlet-api.version>
-
<jsp-api.version>2.0</jsp-api.version>
- </properties>
- <!-- 設定依賴的jar包 -->
- <dependencies>
- <!-- JSP相關 -->
- <dependency>
- <groupId>jstl</groupId>
- <artifactId>jstl</artifactId>
- <version>${jstl.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>${servlet-api.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jsp-api</artifactId>
- <version>${jsp-api.version}</version>
- <scope>provided</scope>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <!-- java編譯外掛 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.2</version>
- <configuration>
- <source>1.7</source>
- <target>1.7</target>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- </plugins>
- </build>
然後在src/main/webapp下建立WEB-INF目錄,在此目錄下建立web.xml。並且在webapps下我們建立一個index.jsp
web.xml檔案內容如下:
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html</welcome-file>
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
index.jsp頁面內容如下:
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- <html>
- <head>
- <title>首頁</title>
- </head>
- <body>
- <h1>hello! test1</h1>
- </body>
- </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節點新增如下內容:
- upstream server_test{
- server 127.0.0.1:8080 weight=1;
- server 127.0.0.1:8081 weight=2;
- }
在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配置到裡面就會出錯