目前公司有個項目,以前的附件服務器是單機的,最近磁盤空間滿了,磁盤又沒法無傷擴容,現須要將後續的附件存入另一個服務器,且代碼不易快速修改;nginx
面臨問題:服務器
爲了方便演示,這裏用192.168.1.100替代 www.xxx.com微信
服務器 | 存儲地址 | 訪問地址 |
---|---|---|
服務器A | /usr/local/upload/ | 192.168.1.100:8080/upload |
服務器B | /usr/local/upload/ | 192.168.1.101:8080/upload |
服務器A需安裝Nginx,安裝步驟略.net
server { listen 8080; server_name localhost; # 例如訪問 http://192.168.1.100:8080/upload/demo.jpg location ^~ /upload/ { # 至關於訪問 /usr/local/upload/demo.jpg root /usr/local; } ... }
啓動nginx,訪問 http://192.168.1.100:8080/upload/demo.jpg,如今能正確訪問服務器A的/usr/local/upload/demo.jpg代理
服務器B一樣安裝Nginx,安裝步驟略code
# 服務器B的nginx配置 server { listen 8080; server_name localhost; # 例如訪問 http://192.168.1.101:8080/upload/demo.jpg location ^~ /upload/ { # 至關於訪問 /usr/local/upload/demo.jpg root /usr/local; } ... }
啓動nginx,訪問 http://192.168.1.101:8080/upload/demo.jpg,如今能正確訪問服務器B的/usr/local/upload/demo.jpgserver
服務器A中的nginx配置,以下blog
server { listen 8080; server_name localhost; # 例如訪問 http://192.168.1.100:8080/upload/demo.jpg location ^~ /upload/ { # 至關於訪問 /usr/local/upload/demo.jpg root /usr/local; # 若是訪問不到,則嘗試訪問新的路徑,$uri至關於/upload/demo.jpg,即將uri也傳遞至@new_uploads try_files $uri @upload_B; } location @upload_B { 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; # 代理服務器B的地址 proxy_pass http://192.168.1.101:8080; } }
從新啓動服務器A的nginx,並刪除服務器A對應的圖片,訪問 http://192.168.1.100:8080/upload/demo.jpg,會發現獲得的是服務器B的圖片,即成功實現圖片的動態「切換」,完成業務目標。圖片
try_files $uri @upload_B
,實現內部重定向。https://my.oschina.net/gmarshal/blog/3067945rem
歡迎關注個人我的微信訂閱號:(聽說這個頭像程序猿專用)