- 安裝tomcat步驟
1. 下載apache-tomcat-8.0.30 ,下載下來的文件為apache-tomcat-8.0.30-windows-x64.zip
2. 解壓該壓縮包到D:/目錄下。
3. 修改解壓文件夾名字為:tomcat-8080
4. 在D:/目錄下創建該文件夾的兩個副本,分別更名為:tomcat-8081、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
實際在用的配置
#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_page
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下重啟nginx
net stop nginx taskkill /f /t /im nginx.exe net start nginx