Nginx+Tocat
- 準備資源
- 啟動服務
- 啟動tomcat
- 梳理
- 匹配原則
- 訪問Nginx服務下的本地資源
- 通過Nginx反向代理訪問Tomcat下的本地資源
準備資源
點擊下載nginx+tomcat資源包,并在當前windows系統的host檔案中進行配置
127.0.0.1 www.vitamin.com
182.92.187.217 blog.csdn.net
配置tomcat執行環境,并修改資源包nginx中conf/nginx.conf的自己的server_name
高級系統設定-環境變數- 系統變數
新建
TOMCAT_HOME=D:\apache-tomcat-8.5.69(我的目錄)
新建CATALINA_HOME=D:\apache-tomcat-8.5.69(我的目錄)
新增Path=;%TOMCAT_HOME%\bin;%CATALINA_HOME%\lib
啟動服務
啟動tomcat
環境配置后,在windows的doc視窗通過tomcat啟動指令startup,啟動成功【關閉行程服務可在任務管理器中操作】
#啟動tomcat
C:\Users\Administrator>startup


驗證,chrom地址欄輸入www.vitamin.com/kotlin/,查看到服務啟動成功后的網頁~

然后通過nginx指令start nginx啟動,啟動成功【關閉行程服務可在任務管理器中操作】
#啟動nginx
C:\Users\Administrator>start nginx
#終止nginx
C:\Users\Administrator>nginx -s stop

測驗Nginx配置的反向代理是否正常,輸入server_name+埠號+匹配字串驗證,
#訪問地址
http://192.168.1.106:8091/kotlin/index.html

代碼驗證ok,下面為Nginx下nginx.conf檔案中的代碼配置
#nginx.conf 配置
#user nobody;
worker_processes 1;
#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;
server {
listen 8091;
server_name 192.168.1.105;#當前臺式機ip
charset utf-8;
#access_log logs/host.access.log main;
#入口檔案的設定
location ^~ /nginx-1.12.2/html/index.html {
root C:/Users/Administrator/Desktop; #入口檔案的所在目錄
index index.html index.htm; #默認入口檔案名稱
}
location ^~ / {
root html; #入口檔案的所在目錄
index index.html index.htm; #默認入口檔案名稱
}
location /index.html {
root html; #入口檔案的所在目錄
index index.html index.htm; #默認入口檔案名稱
}
location = /segment/ {
root html; #入口檔案的所在目錄
index index.html index.htm; #默認入口檔案名稱
}
location = /websocket/ {
proxy_pass http://www.vitamin.com:8090;
}
location = /en/download.html {
proxy_pass http://nginx.org;
}
location = /yao_hou {
proxy_pass https://blog.csdn.net;
}
location = /kotlin/index.html {
proxy_pass http://www.vitamin.com:8090;
}
... ... ...
... ... ...
}
梳理
在實際操作程序,遇到一下產生困惑與混亂的幾點,這里予以分享:
1,匹配原則
2,訪問Nginx服務下的本地資源 {location 匹配欄位不能隨意寫,為什么?}
3,通過Nginx反向代理訪問Tomcat下的本地資源 {location 匹配欄位不能隨意寫,為什么?}
匹配原則
~ 波浪線表示執行一個正則匹配,區分大小寫;
~* 表示執行一個正則匹配,不區分大小寫;
^~ 表示普通字符匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄,
= 進行普通字符精確匹配;
@ 定義一個命名的 location,使用在內部定向時,例如 error_page, try_files
location = / {
# 只匹配"/".
}
location / {
# 匹配任何請求,因為所有請求都是以"/"開始
# 但是更長字符匹配或者正則運算式匹配會優先匹配,比如后邊的[location ~* .(gif|jpg|jpeg)$]
}
location ^~ /images/ {
# 匹配任何以 /images/ 開始的請求,并停止匹配,即使后面有http://ip/images/id這樣的,前面匹配到就停止不會繼續向后觀望,
}
location ~* .(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg結尾的請求.
# 但是所有 /images/ 目錄的請求將由[location ^~ /images/]搶先執行
}
訪問Nginx服務下的本地資源
經過實踐操作,Nginx服務下目錄靜態資源若在服務已啟動的清況下,進行資源更換,通過重繪可以依然實時訪問更新或已修改的資源,
經過實踐操作,nginx.conf檔案內server_name若不是本機ip域名,那么就需要到host檔案中進行登記,比如我用到的182.92.187.217 blog.csdn.net,否則無法執行就訪問,
經過實踐操作,通過location匹配到且訪問root下的資源,那么執行程序是這樣的
以41行代碼為例,chrome輸入http://192.168.1.105:8091/nginx-1.12.2/html/index.html然后實際執行就會訪問C:/Users/Administrator/Desktop/nginx-1.12.2/html/index.html,具體如下圖
location匹配欄位不能隨意書寫,因為在訪問本地資源時,訪問的地址部分欄位是由location的匹配欄位所提供的,

通過Nginx反向代理訪問Tomcat下的本地資源
訪問Tomcat下的資源與Nginx比較相似,只是訪問Tomcat時需要用到反向代理,以72行代碼為例,chrome輸入http://192.168.1.105:8091/kotlin/index.html然后實際執行就會訪問http://www.vitamin.com:8090/kotlin/index.html,location匹配欄位不能隨意書寫,因為在執行反向代理訪問Tomcat服務資源時,訪問的地址部分欄位是由location的匹配欄位所提供的,

參考文章
https://www.hangge.com/blog
https://www.cnblogs.com/
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/290049.html
標籤:其他
