windows nginx + tomcat 負載整合

來源:互聯網
上載者:User

囉嗦話不多說了,直奔主題

完整執行個體下載

步驟1:

先到官方下載個windows版本的nginx1.5現在是最新版本,然後隨便解壓到一個目錄下,我的目錄是C:\Program Files (x86)\nginx-1.5.0

然後雙擊那個nginx.exe啟動看下;預設配置是80連接埠,如果沒有其他程式佔用這個連接埠就應該沒什麼問題,然後直接存取http://localhost,看到歡迎介面就OK了

步驟2:

解壓兩個免安裝的tomcat到隨便一個目錄吧,我的目錄是E:\

用myeclipse或者eclipse建立一個web工程隨便放點東西下去

index.jsp的主要內容

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="pragma" content="no-cache"/><meta http-equiv="cache-control" content="no-cache"/><meta http-equiv="expires" content="0"/>  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"/><meta http-equiv="description" content="This is my page"/><title>Insert title here</title><script src="http://localhost/plugin/jquery/core.js" type="text/javascript"></script><script>$(function(){$("#test").click(function(){alert("使用JQUERY方法成功!");});});</script></head><body>通過nginx進入tomcat訪問靜態資源成功! <input type="button" id="test" value="測試靜態JS"/><% System.out.println("訪問了這個頁面!");%></body></html>

然後修改我們的兩個tomcat的server.xml指向我們的項目,以及修改啟動連接埠,畢竟一個電腦的連接埠都是唯一的,所以為了不衝突就只能修改各種不同的連接埠

這是一個樣本,你可以直接搜尋port,看到有連接埠數字就改變下,來點規律,前面加個1然後整個數字再加1(例如連接埠號碼是8080,你可以改成18080+1=18081)這樣就不會衝突了

<?xml version='1.0' encoding='utf-8'?><Server port="18005" shutdown="SHUTDOWN">  <!--APR library loader. Documentation at /docs/apr.html -->  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->  <Listener className="org.apache.catalina.core.JasperListener" />  <!-- Prevent memory leaks due to use of particular java/javax APIs-->  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />  <GlobalNamingResources>    <Resource name="UserDatabase" auth="Container"              type="org.apache.catalina.UserDatabase"              description="User database that can be updated and saved"              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"              pathname="conf/tomcat-users.xml" />  </GlobalNamingResources>  <Service name="Catalina">      <Connector port="18080" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="18443" />    <!-- Define an AJP 1.3 Connector on port 8009 -->    <Connector port="18009" protocol="AJP/1.3" redirectPort="18443" />    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"             resourceName="UserDatabase"/>      <Host name="localhost"  appBase="webapps"            unpackWARs="true" autoDeploy="true"            xmlValidation="false" xmlNamespaceAware="false"><Context docBase="E:\eclipse\workspace\nginx\WebRoot" reloadable="false" path="/nginx"></Context>      </Host>    </Engine>  </Service></Server>

然後啟動下兩個tomcat看下有木有問題,如果木有問題就是OK了(通過bin下面的start啟動就可以了)

步驟3: 來改我們的nginx設定檔

在conf下新增一個proxy.conf和gzip.conf檔案,前者是使用代理需要的,後者是使用GZIP壓縮需要的配置(可不用);具體的參數自己找找資料吧.這裡不囉嗦了

proxy.conf

proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 10m;client_body_buffer_size 128k;proxy_connect_timeout 300;proxy_send_timeout 300;proxy_read_timeout 300;proxy_buffer_size 4k;proxy_buffers 4 32k;proxy_busy_buffers_size 64k;proxy_temp_file_write_size 64k;

gzip.conf

gzip              on;  gzip_min_length   1024;  gzip_buffers      4 8k;  gzip_comp_level   9;  gzip_proxied      any;  gzip_types        application/xml application/javascript application/x-javascript application/atom+xml application/rss+xml;  gzip_types        text/css text/html text/javascript text/js text/plain text/xml; 

最後是修改的重點nginx.conf

可以先copy下面的配置替換預設的配置,然後自己按照需求來調

#Nginx所用使用者和組,window下不指定#user  niumd niumd;#工作的子進程數量(通常等於CPU數量或者2倍於CPU)worker_processes  2;#錯誤記錄檔存放路徑#error_log  logs/error.log;#error_log  logs/error.log  notice;error_log  logs/error.log  info;#指定pid存放檔案pid        logs/nginx.pid;events {#使用網路IO模型linux建議epoll,FreeBSD建議採用kqueue,window下不指定。#use epoll;#允許最大串連數worker_connections  2048;}http {include       mime.types;default_type  application/octet-stream;#定義日誌格式#log_format  main  '$remote_addr - $remote_user [$time_local] $request '#                  '"$status" $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  off;access_log  logs/access.log;client_header_timeout  3m;client_body_timeout    3m;send_timeout           3m;client_header_buffer_size    1k;large_client_header_buffers  4 4k;sendfile        on;tcp_nopush      on;tcp_nodelay     on;#keepalive_timeout  75 20;include    gzip.conf;include   proxy.conf;upstream localhost {#根據ip計算將請求分配各那個後端tomcat,許多人誤認為可以解決session問題,其實並不能。#同一機器在多網情況下,路由切換,ip可能不同#ip_hash;#weigth參數表示權值,權值越高被分配到的幾率越大server localhost:18080 weight=1;server localhost:28080 weight=6;}server {listen       80;server_name  localhost;location / {      root E:/eclipse/workspace/nginx/WebRoot/statict;    index index.html index.htm;}location ~ \.(html|js|css|png|gif)$ {      root E:/eclipse/workspace/nginx/WebRoot/statict;} location ~ \.(jsp|action)$ {    proxy_connect_timeout   3;    proxy_send_timeout      30;    proxy_read_timeout      30;    proxy_pass http://localhost;}}}

root參數是指向檔案夾路徑,例如我的預設首頁是放在

E:/eclipse/workspace/nginx/WebRoot/statict

index是訪問當前root下的各種靜態檔案,這裡配置訪問是index.html;我頁面請求http://localhost的時候會請求root路徑下的index.html

location ~ \.(html|js|css|png|gif)$

這裡是正則過濾遇到括弧裡的類型就會找root路徑下的檔案,很明顯這裡就是動態跟靜態分離做法,我是把靜態檔案都放在static裡面

location ~ \.(jsp|action)$

這裡是過濾遇到jsp跟action請求就會轉移到tomcat裡請求資源

最後儲存設定檔,關閉nginx,重新啟動,訪問htt://localhost/nginx/index.jsp

多請求幾次就能看到兩個tomcat的小黑視窗有顯示輸出的東西

nginx + tomcat負載就差不多可以了,具體的只是配置的細節,例如拒絕神馬請求,請求神馬需要轉換路徑,就寫多幾個location配置即可,這些內容就自行研究吧!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.