一. Nignx代理(轉發)規則
1.規則一(轉發路徑proxy_pass
+ path
)
- 判斷規則:當location中定義的轉發proxy_pass路徑減去 協議 ip 端口沒有其它內容(不包括斜杠),適用當前規則
- 路徑拼接規則
-
-
轉發路徑就是
proxy_pass
+path
-
- 舉例1
#1.Nginx配置如下 location / { proxy_pass http://127.0.0.1:8080; #此時適應減法規則 proxy_pass + path } #2.用戶訪問http://127.0.0.1/payment path = http://127.0.0.1/payment 減去協議 ip 端口 = /payment proxy_pass = http://127.0.0.1:8080 #3. 最終訪問路徑:http://127.0.0.1:8080/payment
- 舉例2
#1.Nginx配置如下 location /hello { proxy_pass http://127.0.0.1:7071; #此時適應減法規則 proxy_pass + path } #2.用戶訪問http://127.0.0.1/hello/sentinel path = http://127.0.0.1/sentinel 減去協議 ip 端口 = /hello/payment proxy_pass = http://127.0.0.1:7071 #3. 最終訪問路徑:http://127.0.0.1:7071/hello/sentinel
2.規則二(轉發路徑proxy_pass
+ (path-location)
)
- 判斷規則:當location中定義的轉發proxy_pass路徑減去 協議 ip 端口有其它內容(包括斜杠),適用當前規則
- 路徑拼接規則
- 轉發路徑就是
proxy_pass
+ (path-location)
- 轉發路徑就是
- 舉例1
#1.Nginx配置如下 location / { proxy_pass http://127.0.0.1:8080/; #此時適應減法規則 proxy_pass + (path-location) } #2.用戶訪問http://127.0.0.1/payment path = http://127.0.0.1/payment 減去協議 ip 端口 = /payment location = / path-location = payment proxy_pass = http://127.0.0.1:8080/ #3. 最終訪問路徑:http://127.0.0.1:8080/payment
- 舉例2
#1.Nginx配置如下 location /hello { proxy_pass http://127.0.0.1:7071/; #此時適應減法規則 proxy_pass + (path-location) } #2.用戶訪問http://127.0.0.1/hello/sentinel path = http://127.0.0.1/sentinel 減去協議 ip 端口 = /hello/payment location = /hello path-location = /sentinel proxy_pass = http://127.0.0.1:7071/ #3. 最終訪問路徑:http://127.0.0.1:7071/sentinel
二. 部署項目,解決跨域問題
1. 准備三台Linux服務器, 能互相通信
服務器Ip假設如下
- 服務器A : 192.172.3.1
- 服務器B : 192.172.3.2
- 服務器C : 192.172.3.4
2. 打包java服務器項目和vue前段項目
- 服務器A部署java服務器項目
- 服務器B作為橋梁連接服務器A和服務器B
- 服務器c部署Vue前段項目
3. 啟動Java服務器項目, 端口80
4. 修改配置文件
- 修改Vue前段項目的請求路徑
#請求路徑修改為服務器B的路徑 axios.defaults.baseURL = "http://192.172.3.2/demo/"
- 在服務器c的Nginx中部署Vue前段項目
- 修改服務器c - Nginx的配置文件
#配置默認訪問路徑 location / { root dist; #vue項目打包后的文件名 index index.html index.htm; }
- 修改服務器B - Nginx的配置文件
server { listen 80; server_name localhost; location / { #vue項目 proxy_pass http://192.172.3.3; } location /demo { #springboot服務 proxy_pass http://192.172.3.1/; #此處端口如果不算80,需要帶上端口 } }
5. 訪問項目 192.172.3.2
三. 解決服務端負載均衡
#1.編輯nginx.conf文件
#2.在http節點里添加:定義負載均衡設備的 ip及設備狀態
upstream myServer{//要代理的服務器
server 192.168.254.131:8080;
server 192.168.254.131:8088;
}
server{
listen 80; //nginx服務器訪問端口
server_name localhost; //nginx服務器地址
#3.轉發路徑處填寫前面定義的設備組
location / {
proxy_pass http://myServer/;//nginx代理的服務器地址
}
}