首頁 > 軟體

nginx反向代理踩坑實戰記錄(容器方式)

2022-04-18 13:00:21

一、簡述

1.1 什麼是反向代理?

這很重要,反向代理就是代理伺服器代理真實伺服器。使用者端以為代理伺服器就是真實伺服器,所以就會把要請求的==資源(URL)==發給代理伺服器。

代理伺服器一般是由nginx來充當,代理功能由組態檔來完成。

1.2 看圖理解

畫的倉促,大概有這個意思

1.3 錯誤總結

錯誤記錄:

nginx和tomcat全容器化

用nginx代理兩臺tomcat伺服器,

當存取資源帶edu的時候交給tomcat1

當存取資源帶vod的時候交給tomcat2

做反向代理測試的時候,寫的是完整的URL,不是部分路徑。因為代理伺服器在使用者端看來就是真實伺服器!!!

這次對反向代理的理解更深刻了,堅持下來沒有錯。

同時,請教別人也是必須的,多交流多思考才能更好的解決問題~

以下是錯誤演示

二、正確案例

2.1 啟動nginx

docker run --name nginx -p 80:80 --link=tomcat:tomcat1 --link=tomcat02:tomca -v /opt/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/docker-nginx/log:/var/log/nginx -v /opt/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d 313ec0a602bc

2.2 啟動tomcat

先啟動一個

docker run -it -p 8080:8080 tomcat

docker cp複製檔案

docker cp 容器id:/usr/local/tomcat/webapps.dist/* /opt/webapps

再啟動掛載卷

docker run -it -p 8081:8080 --name tomcat01 -v /opt/webapps:/usr/local/tomcat/webapps tomcat
docker run -it -p 8082:8080 --name tomcat02 -v /opt/webapps:/usr/local/tomcat/webapps tomcat

建檔案,建資源

[root@VM-16-8-centos vod]# ll
total 4
-rw-r–r-- 1 root root 11 Apr 14 21:42 a.html
[root@VM-16-8-centos vod]# pwd
/opt/tomcat/webapps/vod

[root@VM-16-8-centos edu]# ll
total 4
-rw-r–r-- 1 root root 8 Apr 14 21:26 a.html
[root@VM-16-8-centos edu]# pwd
/opt/tomcat/webapps/edu

2.3 設定nginx

[root@VM-16-8-centos docker-nginx]# vim nginx.conf 

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
      listen 80;
      server_name xxx.xxx.xxx.xxx;

      location ~ /edu/ {
         proxy_pass http://xxx.xxx.xxx.xxx:8081;
      }

      location ~ /vod/ {
         proxy_pass http://xxx.xxx.xxx.xxx:8082;
      }
    }
}

2.4 重啟所有服務

docker restart …

2.5 測試

三、雲伺服器上跑的nginx怎麼代理本地專案

不可以!

要麼都在雲端,只有代理伺服器IP和真實伺服器IP能互通的情況下才能代理!!!

總結

到此這篇關於nginx反向代理踩坑實戰的文章就介紹到這了,更多相關nginx反向代理踩坑內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com