一臺機器部署多個tomcat服務 nginx反向代理多個服務 筆記

  • 安裝tomcat步驟 
          1. 下載apache-tomcat-8.0.30 ,下載下來的文件爲apache-tomcat-8.0.30-windows-x64.zip
          2. 解壓該壓縮包到D:/目錄下。
          3. 修改解壓文件夾名字爲:tomcat-8080
          4. 在D:/目錄下建立該文件夾的兩個副本,分別改名爲:tomcat-808一、tomcat-8082
          5. 添加環境變量:右鍵單擊個人電腦->選擇屬性->選擇高級->選擇環境變量:添加系統變量:
               CATALINA_HOME_8080,其值爲:D:\tomcat-8080;
               CATALINA_HOME_8081,其值爲:D:\tomcat-8081;
               CATALINA_HOME_8082,其值爲:D:\tomcat-8082;
          6. 修改啓動端口和關閉端口:
               進入D:\tomcat-8081\conf\目錄,打開server.xml文件,修改下面兩個地方:
               (1)<Server port="8006" shutdown="SHUTDOWN">
                         修改這個port=」8006」,使得它的關閉端口和另外一個關閉端口不發生衝突。
               (2)<Connector port="8081" maxHttpHeaderSize="8192"
                              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                              enableLookups="false" redirectPort="8443" acceptCount="100"
                              connectionTimeout="20000" disableUploadTimeout="true" />
                         修改port=」8081」,使得它的鏈接端口和另外一個不衝突。
               (3)<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
                         修改這個port=」8010」,使得它的AJP端口和另外一個不衝突。
          7. 修改startup.bat、shutdown.bat和catalina.bat文件內容:
               (1) 打開D:\tomcat-8081\bin\startup.bat文件,把其中全部CATALINA_HOME替換爲CATALINA_HOME_8081。
               (2) 打開D:\tomcat-8081\bin\shutdown.bat文件,把其中全部CATALINA_HOME替換爲CATALINA_HOME_8081。
               (3) 打開D:\tomcat-8081\bin\catalina.bat文件,把其中全部CATALINA_HOME替換爲CATALINA_HOME_8081。
          9.按照上述方法配置tomcat-8080 ,tomcat-8082。
          10.啓動Tomcat,在命令行下分別進入三個不一樣的Tomcat安裝目錄下,執行startup.bat,分別啓動三個Tomcat。而後在瀏覽器中輸入如下內容,若是顯示tomcat主頁,則部署成功:
       http://localhost:8080
       http://localhost:8081
       http://localhost:8082
  • 將tomcat配置成服務
          1.進入tomcat-8080/bin目錄,修改 service.bat,找到如下內容,修改SERVICE_NAME爲自定義的服務名
               rem Set default Service name
               set SERVICE_NAME=tomcat8080
               set DISPLAYNAME=Apache Tomcat 8.0 %SERVICE_NAME%
          2.在service.bat中搜索CATALINA_HOME,並所有替換爲CATALINA_HOME_8080(與環境變量名保持一致)
          3.在tomcat-8080/bin目錄下,找到tomcat8.exe和tomcat8w.exe,重命名爲SERVICE_NAME配置的名字一致,這裏重命名爲tomcat8080.exe和tomcat8080w.exe 這個其實能夠不改
          4.使用命令行進入tomcat-8080/bin,執行service.bat install
          5.使用win+r輸入services.msc進入服務界面,找到DISPLAYNAME對應的服務名(即Apache Tomcat 8.0 tomcat8080),右鍵選擇「屬性」菜單,在「常規」選項卡選擇「啓動類型」爲「自動」,或者進入tomcat-8080/bin目錄 ,雙擊tomcat8080w.exe,在彈出的界面選中General選項卡,選擇Startup type爲Automatic,即開機自啓動
 
nginx配置
 
  
location  = / {
  # 精確匹配 / ,主機名後面不能帶任何字符串
  [ configuration A ] 
}

location  / {
  # 由於全部的地址都以 / 開頭,因此這條規則將匹配到全部請求
  # 可是正則和最長字符串會優先匹配
  [ configuration B ] 
}

location /documents/ {
  # 匹配任何以 /documents/ 開頭的地址,匹配符合之後,還要繼續往下搜索
  # 只有後面的正則表達式沒有匹配到時,這一條纔會採用這一條
  [ configuration C ] 
}

location ~ /documents/Abc {
  # 匹配任何以 /documents/ 開頭的地址,匹配符合之後,還要繼續往下搜索
  # 只有後面的正則表達式沒有匹配到時,這一條纔會採用這一條
  [ configuration CC ] 
}

location ^~ /images/ {
  # 匹配任何以 /images/ 開頭的地址,匹配符合之後,中止往下搜索正則,採用這一條。
  [ configuration D ] 
}

location ~* \.(gif|jpg|jpeg)$ {
  # 匹配全部以 gif,jpg或jpeg 結尾的請求
  # 然而,全部請求 /images/ 下的圖片會被 config D 處理,由於 ^~ 到達不了這一條正則
  [ configuration E ] 
}

location /images/ {
  # 字符匹配到 /images/,繼續往下,會發現 ^~ 存在
  [ configuration F ] 
}

location /images/abc {
  # 最長字符匹配到 /images/abc,繼續往下,會發現 ^~ 存在
  # F與G的放置順序是沒有關係的
  [ configuration G ] 
}

location ~ /images/abc/ {
  # 只有去掉 config D 纔有效:先最長匹配 config G 開頭的地址,繼續往下搜索,匹配到這一條正則,採用
    [ configuration H ] 
}

location ~* /js/.*/\.js

 

實際在用的配置php

#user  nobody;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;

 #服務器的集羣  
    #upstream  localhost{  #服務器集羣名字  
       
    #server    localhost:80;#服務器配置   weight是權重的意思,權重越大,分配的機率越大。
    #server    10.10.10.121:80;
     #ip_hash;
    #}     

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

       
       location /back/ {
            proxy_pass      http://192.168.3.236:8080/back/; #後面的斜槓不能少,做用是不日後端傳遞/mail-api 這個路徑
            #roxy_redirect  off;
            #proxy_set_header  Host  mailapi.domain.com; #傳遞不一樣的host給後方節點,實現IP和域名都可以訪問
            #proxy_set_header Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location /common/ {
            proxy_pass      http://192.168.3.236:8088/common/; 
            #proxy_redirect  off;
            #proxy_set_header Host $host;
           # proxy_set_header  Host  otherapi1.domain.com;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        
  
        location = / {
        #proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://192.168.3.236:8080/back/login;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

 

proxy_pass依然可以使用error_pagehtml

  location / {
            proxy_pass https://10.10.10.244:444;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_intercept_errors on;
            proxy_redirect default;
        }

 

windows下重啓nginxnginx

net stop nginx
taskkill /f /t /im nginx.exe

net start nginx
相關文章
相關標籤/搜索