Nginx的學習之路——反向代理與緩存

反向代理的意義

使用反向代理,能夠對用戶隱藏服務器的信息,同時代理將用戶的請求經過負載均衡算法分發到不一樣的上游服務器處理,不只加強了服務的處理性能,也保證了服務的高可用性,在上游的某一臺服務器掛掉時,服務仍然能夠經過其餘的上游服務器對外服務。css

Nginx反向代理配置

這裏簡單演示一下反向代理,因此只部署了一臺上游服務器,這裏修改一下現有的nginx監聽的套接字html

這裏nginx監聽docker容器內的8080端口,在我本機中的8080端口映射容器的80端口nginx

從新啓動 nginx後咱們能夠看到本機已經沒法訪問 nginx

在容器中從新開啓一個nginx服務器,並修改這個新的服務器配置算法

這裏須要注意的是,由於走了一層代理,因此上游服務器是無法拿到客戶端的ip等信息的,由於上游服務器的客戶端實際上是咱們的代理服務器,因此咱們須要在代理服務器轉發的時候將客戶端的信息放在頭信息中轉發出去 proxy_set_header

此時再在本機訪問8080端口(本機8080=>容器中代理服務器80=>容器中上游服務器8080)能夠看到能夠訪問以前的頁面了。docker

並且咱們能夠看到在響應中加上了代理的信息緩存

緩存

在咱們請求的頁面中,有一部份內容是一段時間內不變的,好比說js css 靜態html文檔等,這類文件咱們就能夠將其緩存在代理服務器上,從而減輕上游服務器的壓力。 那麼如何設置呢?服務器

首先咱們須要指定代理服務器緩存存放的位置:app

proxy_cache_path指定了緩存存放的文件的位置以及相關配置負載均衡

Sets the path and other parameters of a cache. Cache data are stored in files. The file name in a cache is a result of applying the MD5 function to the cache key. The levels parameter defines hierarchy levels of a cache: from 1 to 3, each level accepts values 1 or 2. For example, in the following configuration性能

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; file names in a cache will look like this:

/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

更多配置的詳細信息能夠查看nginx官方文檔

重啓代理服務器,並訪問一次首頁,使代理服務器緩存下頁面,而後咱們斷掉上游服務器

這裏咱們看到只有代理服務器進程在服務器,而後咱們訪問首頁發現依然是能夠訪問的

同時咱們去看咱們指定的緩存路徑下的文件,發現nginxhtml緩存到咱們指定的路徑下了

相關文章
相關標籤/搜索