樹莓派4B 暫存器基地址查詢
什麼是正向代理:
正向代理(forward proxy):是一個位於客戶端和目標伺服器之間的伺服器(代理伺服器),為了從目標伺服器取得內容,客戶端向代理伺服器傳送一個請求並指定目標,然後代理伺服器向目標伺服器轉交請求並將獲得的內容返回給客戶端。
這種代理其實在生活中是比較常見的,比如VPN上網技術,其用到的就是代理技術。
有時候,使用者想要訪問某國外網站,該網站無法在國內直接訪問,但是我們可以訪問到一個代理伺服器,這個代理伺服器可以訪問到這個國外網站。這樣呢,使用者對該國外網站的訪問就需要通過代理伺服器來轉發請求,並且該代理伺服器也會將請求的響應再返回給使用者。這個上網的過程就是用到了正向代理。
正向代理的用途:
1,突破訪問限制
通過代理伺服器,可以突破自身IP訪問限制,訪問國外網站,教育網等。
2,提高訪問速度
通常代理伺服器都設定一個較大的硬碟緩衝區,會將部分請求的響應儲存到緩衝區中,當其他使用者再訪問相同的資訊時, 則直接由緩衝區中取出資訊,傳給使用者,以提高訪問速度。
3,隱藏客戶端真實IP
上網者也可以通過這種方法隱藏自己的IP,免受攻擊。
什麼是反向代理:
反向代理(reverse proxy):是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。
我們在租房子的過程中,除了有些房源需要通過中介以外,還有一些是可以直接通過房東來租的。使用者直接找到房東租房的這種情況就是我們不使用代理直接訪問國內的網站的情況。
還有一種情況,就是我們以為我們接觸的是房東,其實有時候也有可能並非房主本人,有可能是他的親戚、朋友,甚至是二房東。但是我們並不知道和我們溝通的並不是真正的房東。這種幫助真正的房主租房的二房東其實就是反向代理伺服器。這個過程就是反向代理。
對於常用的場景,就是我們在Web開發中用到的負載均衡伺服器(二房東),客戶端(租客)傳送請求到負載均衡伺服器(二房東)上,負載均衡伺服器(二房東)再把請求轉發給一臺真正的伺服器(房東)來執行,再把執行結果返回給客戶端(租客)。
反向代理的用途:
1,隱藏伺服器真實IP
使用反向代理,可以對客戶端隱藏伺服器的IP地址。
2,負載均衡
反向代理伺服器可以做負載均衡,根據所有真實伺服器的負載情況,將客戶端請求分發到不同的真實伺服器上。
3,提高訪問速度
反向代理伺服器可以對於靜態內容及短時間內有大量訪問請求的動態內容提供快取服務,提高訪問速度。
4,提供安全保障
反向代理伺服器可以作為應用層防火牆,為網站提供對基於Web的攻擊行為(例如DoS/DDoS)的防護,更容易排查惡意軟體等。還可以為後端伺服器統一提供加密和SSL加速(如SSL終端代理),提供HTTP訪問認證等。
本節我們來實際配置一下反向代理
我們還是來氣兩個springboot專案,讓其分別監聽在8081,和8082
import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication public class NginxtestApplication { @Value("${server.port:}") private String port; public static void main(String[] args) { SpringApplication.run(NginxtestApplication.class, args); } @GetMapping("") public String hello() { System.out.println("call me " + port); return "i am " + port; } }
java -jar test.jar --server.port=8081 java -jar test.jar --server.port=8082
現在來配置nginx.conf檔案
worker_processes 4;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen *:8181;
server_name 192.168.56.127;
location / {
proxy_pass http://192.168.56.127:8081;
root test;
index index.html ;
}
}
server {
listen *:8182;
server_name 192.168.56.127;
location / {
proxy_pass http://192.168.56.127:8082;
root html;
index index.html index.htm;
}
}
}
可以看到我們用埠號8181代理了 8081的服務,用8182代理了8082的服務,現在我們重新啟動服務
nginx -s reload
看看結果如何:
後面貼上結果