導航:首頁 > 文檔加密 > nginx反向代理網址加密

nginx反向代理網址加密

發布時間:2023-06-02 22:25:34

㈠ 請教問題nginx反向代理proxy

一、反向代理:Web伺服器的「經紀人」
1.1 反向代理初印象
反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連接請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連接的客戶端,此時代理伺服器對外就表現為一個伺服器。
Nginx搭建反向代理伺服器過程詳解
從上圖可以看出:反向代理伺服器位於網站機房,代理網站Web伺服器接收Http請求,對請求進行轉發。
1.2 反向代理的作用
①保護網站安全:任何來自Internet的請求都必須先經過代理伺服器;
Nginx搭建反向代理伺服器過程詳解
②通過配置緩存功能加速Web請求:可以緩存真實Web伺服器上的某些靜態資源,減輕真實Web伺服器的負載壓力;
Nginx搭建反向代理伺服器過程詳解
③實現負載均衡:充當負載均衡伺服器均衡地分發請求,平衡集群中各個伺服器的負載壓力;
Nginx搭建反向代理伺服器過程詳解
二、初識Nginx:簡單卻不平凡
2.1 Nginx是神馬?
Nginx搭建反向代理伺服器過程詳解
Nginx是一款輕量級的網頁伺服器、反向代理器以及電子郵件代理伺服器。其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。
Source:Nginx(發音同engine x),它是由俄羅斯程序員Igor Sysoev所開發的。起初是供俄國大型的門戶網站及搜索引擎Rambler(俄語:Рамблер)使用。此軟體BSD-like協議下發行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系統中運行。
說到Web伺服器,Apache伺服器和IIS伺服器是兩大巨頭;但是運行速度更快、更靈活的對手:Nginx 正在迎頭趕上。
2.2 Nginx的應用現狀
Nginx 已經在俄羅斯最大的門戶網站── Rambler Media(www.rambler.ru)上運行了3年時間,同時俄羅斯超過20%的虛擬主機平台採用Nginx作為反向代理伺服器。
Nginx搭建反向代理伺服器過程詳解Nginx搭建反向代理伺服器過程詳解Nginx搭建反向代理伺服器過程詳解Nginx搭建反向代理伺服器過程詳解Nginx搭建反向代理伺服器過程詳解
在國內,已經有 淘寶、新浪博客、新浪播客、網易新聞、六間房、56.com、Discuz!、水木社區、豆瓣、YUPOO、海內、迅雷在線 等多家網站使用 Nginx 作為Web伺服器或反向代理伺服器。
2.3 Nginx的核心特點
(1)跨平台:Nginx 可以在大多數 Unix like OS編譯運行,而且也有Windows的移植版本;
(2)配置異常簡單:非常容易上手。配置風格跟程序開發一樣,神一般的配置;
(3)非阻塞、高並發連接:數據復制時,磁碟I/O的第一階段是非阻塞的。官方測試能夠支撐5萬並發連接,在實際生產環境中跑到2~3萬並發連接數。(這得益於Nginx使用了最新的epoll模型);
PS:對於一個Web伺服器來說,首先看一個請求的基本過程:建立連接—接收數據—發送數據,在系統底層看來 :上述過程(建立連接—接收數據—發送數據)在系統底層就是讀寫事件。
①如果採用阻塞調用的方式,當讀寫事件沒有準備好時,必然不能夠進行讀寫事件,那麼久只好等待,等事件准備好了,才能進行讀寫事件,那麼請求就會被耽擱 。
②既然沒有準備好阻塞調用不行,那麼採用非阻塞調用方式。非阻塞就是:事件馬上返回,告訴你事件還沒准備好呢,你慌什麼,過會再來吧。好吧,你過一會,再來檢查一下事件,直到事件准備好了為止,在這期間,你就可以先去做其它事情,然後再來看看事件好了沒。雖然不阻塞了,但你得不時地過來檢查一下事件的狀態,你可以做更多的事情了,但帶來的開銷也是不小的。
(4)事件驅動:通信機制採用epoll模型,支持更大的並發連接。
①非阻塞通過不斷檢查事件的狀態來判斷是否進行讀寫操作,這樣帶來的開銷很大,因此就有了非同步非阻塞的事件處理機制。這種機制讓你可以同時監控多個事件,調用他們是阻塞的,但可以設置超時時間,在超時時間之內,如果有事件准備好了,就返回。這種機制解決了上面阻塞調用與非阻塞調用的兩個問題。
②以epoll模型為例:當事件沒有準備好時,就放入epoll(隊列)裡面。如果有事件准備好了,那麼就去處 理;如果事件返回的是EAGAIN,那麼繼續將其放入epoll裡面。從而,只要有事件准備好了,我們就去處理它,只有當所有事件都沒有準備好時,才在 epoll裡面等著。這樣,我們就可以並發處理大量的並發了,當然,這里的並發請求,是指未處理完的請求,線程只有一個,所以同時能處理的請求當然只有一 個了,只是在請求間進行不斷地切換而已,切換也是因為非同步事件未准備好,而主動讓出的。這里的切換是沒有任何代價,你可以理解為循環處理多個准備好的事 件,事實上就是這樣的。
③與多線程方式相比,這種事件處理方式是有很大的優勢的,不需要創建線程,每個請求佔用的內存也很少,沒有上下文切換, 事件處理非常的輕量級,並發數再多也不會導致無謂的資源浪費(上下文切換)。對於IIS伺服器,每個請求會獨佔一個工作線程,當並發數上到幾千時,就同時 有幾千的線程在處理請求了。這對操作系統來說,是個不小的挑戰:因為線程帶來的內存佔用非常大,線程的上下文切換帶來的cpu開銷很大,自然性能就上不 去,從而導致在高並發場景下性能下降嚴重。
總結:通過非同步非阻塞的事件處理機制,Nginx實現由進程循環處理多個准備好的事件,從而實現高並發和輕量級。
(5)Master/Worker結構:一個master進程,生成一個或多個worker進程。
Nginx搭建反向代理伺服器過程詳解
PS:Master-Worker設計模式核心思想是將原來串列的邏輯並行化, 並將邏輯拆分成很多獨立模塊並行執行。其中主要包含兩個主要組件Master和Worker,Master主要將邏輯進行拆分,拆分為互相獨立的部分,同 時維護了Worker隊列,將每個獨立部分下發到多個Worker並行執行,Worker主要進行實際邏輯計算,並將結果返回給Master。
問:nginx採用這種進程模型有什麼好處?
答:採用獨立的進程,可以讓互相之間不會影響,一個進程退出後,其它進程還在工作,服務不會中斷,Master 進程則很快重新啟動新的Worker進程。當然,Worker進程的異常退出,肯定是程序有bug了,異常退出,會導致當前Worker上的所有請求失 敗,不過不會影響到所有請求,所以降低了風險。
(6)內存消耗小:處理大並發的請求內存消耗非常小。在3萬並發連接下,開啟的10個Nginx 進程才消耗150M內存(15M*10=150M)。
(7)內置的健康檢查功能:如果 Nginx 代理的後端的某台 Web 伺服器宕機了,不會影響前端訪問。
(8)節省帶寬:支持 GZIP 壓縮,可以添加瀏覽器本地緩存的 Header 頭。
(9)穩定性高:用於反向代理,宕機的概率微乎其微。
三、構建實戰:Nginx+IIS構築Web伺服器集群的負載均衡
這里我們主要在Windows環境下,通過將同一個Web網站部署到不同伺服器的IIS上,再通過一個統一的Nginx反響代理伺服器對外提供統一訪問接入,實現一個最簡化的反向代理和負載均衡服務。但是,受限於實驗條件, 我們這里主要在一台計算機上進行反向代理、IIS集群的模擬,具體的實驗環境如下圖所示:我們將nginx服務和web網站都部署在一台計算機 上,nginx監聽http80埠,而web網站分別以不同的埠號(這里是8050及8060)部署在同一個IIS伺服器上,用戶訪問 localhost時,nginx作為反向代理將請求均衡地轉發給兩個IIS中不同埠的Web應用程序進行處理。雖然實驗環境很簡單而且有限,但是對於 一個簡單的負載均衡效果而言,本文是可以達到並且展示的。
Nginx搭建反向代理伺服器過程詳解
3.1 准備一個ASP.NET網站部署到IIS伺服器集群中
(1)在VS中新建一個ASP.NET Web應用程序,但是為了在一台計算機上展示效果,我們將這個Web程序復制一份,並修改兩個Web程序的Default.aspx,讓其的首頁顯示不同 的一點信息。這里Web1展示的是「The First Web:」,而Web2展示的則是「The Second Web」。
Nginx搭建反向代理伺服器過程詳解
(2)調試運行,看看兩個網站的效果如何?
①Web1的展示效果:
Nginx搭建反向代理伺服器過程詳解
②Web2的展示效果:
Nginx搭建反向代理伺服器過程詳解
③部署到IIS中,分配不同的埠號:這里我選擇了Web1:8050,Web2:8060
Nginx搭建反向代理伺服器過程詳解
(3)總結:在真實環境中,構建Web應用伺服器集群的實現是將同一個Web應用程序部署到Web伺服器集群中的多個Web伺服器上。
3.2 下載Nginx並部署到伺服器中作為自啟動的Windows服務
(1)到Nginx官網下載Nginx的Windows版本:http://nginx.org/en/download.html(這里我們使用nginx/Windows-1.4.7版本進行實驗,本文底部有下載地址)
(2)解壓到磁碟任意目錄,例如這里我解壓到了:D:\Servers\nginx-1.4.7
(3)啟動、停止和重新載入服務:通過cmd以守護進程方式啟動nginx.exe:start nginx.exe,停止服務:nginx -s stop,重新載入配置:nginx -s reload;
Nginx搭建反向代理伺服器過程詳解
(4)每次以cmd方式啟動Nginx服務不符合實際要求,於是我們想到將其注冊為Windows服務,並設置為自動啟動模式。這里,我們使用一個 不錯的小程序:「Windows Service Wrapper」,將nginx.exe注冊為Windows服務,具體的步湊如下:
①下載最新版的 Windows Service Wrapper 程序,比如我下載的名稱是 「winsw-1.8-bin.exe」(本文底部有下載地址),然後把它命名成你想要的名字(比如: 「nginx-service.exe」,當然,你也可以不改名)
②將重命名後的 nginx-service.exe 復制到 nginx 的安裝目錄(比如,我這里是 「D:\Servers\nginx-1.4.7″)
③在同一個目錄下創建一個Windows Service Wrapper 的XML配置文件,名稱必須與第一步重命名時使用的名稱一致(比如我這里是 「nginx-service.xml」, 如果,你沒有重命名,則應該是 「winsw-1.8-bin.xml」),這個XML的內容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<service>
<id>nginx</id>
<name>Nginx Service</name>
<description>High Performance Nginx Service</description>
<executable>D:\Servers\nginx-1.4.7\nginx.exe</executable>
<logpath>D:\Servers\nginx-1.4.7\</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-p D:\Servers\nginx-1.4.7</startargument>
<stopargument>-p D:\Servers\nginx-1.4.7 -s stop</stopargument>
</service>
④在命令行下執行以下命令,以便將其注冊成Windows服務:nginx-service.exe install
Nginx搭建反向代理伺服器過程詳解
⑤接下來就可以在Windows服務列表看到Nginx服務了,這里我們可以將其設置為自動啟動了:
Nginx搭建反向代理伺服器過程詳解
(5)總結:在Windows環境中,要對外提供的Windows服務一般都要將其啟動類型設置為自動。
3.3 修改Nginx核心配置文件nginx.conf
(1)進程數與每個進程的最大連接數:
?nginx進程數,建議設置為等於CPU總核心數
?單個進程最大連接數,那麼該伺服器的最大連接數=連接數*進程數
Nginx搭建反向代理伺服器過程詳解
(2)Nginx的基本配置:
?監聽埠一般都為http埠:80;
?域名可以有多個,用空格隔開:例如 server_name www.ha97.com ha97.com;
Nginx搭建反向代理伺服器過程詳解
(3)負載均衡列表基本配置:
?location / {}:對aspx後綴的進行負載均衡請求,假如我們要對所有的aspx後綴的文件進行負載均衡時,可以這樣寫:location ~ .*\.aspx$ {}
?proxy_pass:請求轉向自定義的伺服器列表,這里我們將請求都轉向標識為http://cuitccol.com的負載均衡伺服器列表;
Nginx搭建反向代理伺服器過程詳解
?在負載均衡伺服器列表的配置中,weight是權重,可以根據機器配置定義權重(如果某台伺服器的硬體配置十分好,可以處理更多的請求,那麼可以 為其設置一個比較高的weight;而有一台的伺服器的硬體配置比較差,那麼可以將前一台的weight配置為weight=2,後一台差的配置為 weight=1)。weigth參數表示權值,權值越高被分配到的幾率越大;
Nginx搭建反向代理伺服器過程詳解
(4)總結:最基本的Nginx配置差不多就是上面這些內容,當然僅僅是最基礎的配置。(詳細的配置內容請下載底部的nginx-1.4.7詳細查看)
3.4 添加Nginx對於靜態文件的緩存配置
為了提高響應速度,減輕真實伺服器的負載,對於靜態資源我們可以在反向代理伺服器中進行緩存,這也是反向代理伺服器的一個重要的作用。
(1)緩存靜態資源之圖片文件
root /nginx-1.4.7/staticresources/image:對於配置中提到的jpg/png等文件均定為到/nginx-1.4.7/staticresources/image文件夾中進行尋找匹配並將文件返回;
expires 7d:過期時效為7天,靜態文件不怎麼更新,過期時效可以設大一點,如果頻繁更新,則可以設置得小一點;
TIPS:下面的樣式、腳本緩存配置同這里一樣,只是定位的文件夾不一樣而已,不再贅述。
Nginx搭建反向代理伺服器過程詳解
(2)緩存靜態資源之樣式文件
Nginx搭建反向代理伺服器過程詳解
(3)緩存靜態資源之腳本文件
Nginx搭建反向代理伺服器過程詳解
(4)在nginx服務文件夾中創建靜態資源文件夾,並要緩存的靜態文件拷貝進去:這里我主要將Web程序中用到的image、css以及js文件拷貝了進去;
Nginx搭建反向代理伺服器過程詳解
(5)總結:通過配置靜態文件的緩存設置,對於這些靜態文件的請求可以直接從反向代理伺服器中直接返回,而無需再將這些靜態資源請求轉發到具體的Web伺服器進行處理了,可以提高響應速度,減輕真實Web伺服器的負載壓力。
3.5 簡單測試Nginx反向代理實現負載均衡效果
(1)第一次訪問http://localhost/Default.aspx時從127.0.0.1:8050處理響應返回結果
(2)第二次訪問http://localhost/Default.aspx時從127.0.0.1:8060處理響應返回結果
(3)多次訪問http://localhost/Default.aspx時的截屏:
Nginx搭建反向代理伺服器過程詳解
學習小結
在本文中,藉助了Nginx這個神器簡單地在Windows環境下搭建了一個反向代理服務,並模擬了一個IIS伺服器集群的負載均衡效果。從這個 DEMO中,我們可以簡單地感受到反向代理為我們所做的事情,並體會負載均衡是怎麼一回事。但是,在目前大多數的應用中,都會將Nginx部署在 Linux伺服器中,並且會做一些針對負載均衡的優化配置,這里我們所做的僅僅就是一個小小的使用而已(just修改一下配置文件)。不過,萬丈高樓平地 起,前期的小小體會,也會幫助我們向後期的深入學習奠定一點點的基礎。
突然在QQ空間里看到了朋友送的禮物,猛然發現今天居然是我的陽歷生日,好吧,我祝我自己生日快樂,希望自己在未來的日子中能夠做更多的實踐,分享更多的內容。當然,如果你覺得本文還可以,那也麻煩點個贊,不要吝嗇你的滑鼠左鍵喲。

㈡ 誰能解釋一下nginx反向代理是什麼意思

nginx反向代理的意思:就是代理內部伺服器對外進行服務的 nginx 代理服務。

nginx反向代理的反向性在於:Nginx作為負載均衡服務時Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務,也可以支持作為 HTTP代理服務對外進行服務。

反向代理的方向與正向代理相反,代表外部網路用戶向內部伺服器發出請求,即接收來自Internet上用戶的連接請求,並將這些請求轉發給內部網路上的伺服器,然後將從內部伺服器上得到的響應返回給Internet上請求連接的客戶。

反向效果:對於用戶而言,反向代理伺服器就相當於目標伺服器,即用戶直接訪問反向代理伺服器就可以獲得目標伺服器的資源。用戶不需要知道目標伺服器的地址,作為Web伺服器的前置機來降低網路和伺服器的負載,提高訪問效率。

(2)nginx反向代理網址加密擴展閱讀:

反向代理的優勢:

1、加快了對內部伺服器的訪問速度

在內部伺服器前放置兩台反向代理伺服器,分別連接到教育網和公網,這樣公網用戶就可以直接通過公網線路訪問學校伺服器,從而避開了公網和教育網之間擁擠的鏈路。同時反向代理伺服器的緩存功能也加快了用戶的訪問速度。

2、節約了有限的IP資源

校園網內部伺服器除使用教育網地址外,也會採用公網的IP地址對外提供服務,公網分配的IP地址數目是有限的,如果每個伺服器有分配-個公網地址,那是不可能的,通過反向代理技術很好地解決了IP地址不足的問題。

㈢ Nginx 最全操作——nginx反向代理(5)

將 NGINX 配置為 HTTP 和其他協議的反向代理,支持修改請求標頭和微調的響應緩沖。

本文介紹代理伺服器的基本配置。您將學習如何通過不同的協議將請求從 NGINX 傳遞到代理伺服器,修改發送到代理伺服器的客戶端請求標頭,以及配置來自代理伺服器的響應的緩沖。

代理通常用於在多個伺服器之間分配負載,無縫顯示來自不同網站的內容,或通過 HTTP 以外的協議將處理請求傳遞給應用程序伺服器。

當 NGINX 代理請求時,它會將請求發送到指定的代理伺服器,獲取響應,然後將請求發送回客戶端。可以使用指定的協議將請求代理到 HTTP 伺服器(另一個 NGINX 伺服器或任何其他伺服器)或非 HTTP 伺服器(可以運行使用特定框架開發的應用程序,例如 PHP 或 Python)。支持的協議包括FastCGI、uwsgi、SCGI和memcached。

要將請求傳遞給 HTTP 代理伺服器,需要在location中指定proxy_pass指令。例如:

此示例配置導致將在此位置處理的所有請求傳遞到指定地址的代理伺服器。此地址可以指定為域名或者 IP 地址。該地址還可能包括一個埠:

注意,在上面的第一個例子中,代理的伺服器的地址後面是一個URI, /link/ 。如果 URI 與地址一起指定,它將替換請求 URI 中與 location 參數匹配的部分。例如,這里帶有 /some/path/page.html URI的請求將被代理到 http://www.example.com/link/page.html . 如果指定的地址沒有問題 URI,或者無法確定要替換的 URI 部分,則傳遞完整的請求 URI(可能已修改)。

要將請求傳遞給非 HTTP 代理伺服器, **_pass 應使用適當的指令:

請注意,在這些情況下,指定地址的規則可能不同。您可能還需要將其他參數傳遞給伺服器(有關詳細信息,請參閱參考文檔)。

proxy_pass指令也可以指向一組命名的伺服器。在這種情況下,請求根據指定的方法在組中的伺服器之間分發。

默認情況下,NGINX 重新定義代理請求中的兩個 header 欄位,「Host」和「Connection」,並消除值為空字元串的 header 欄位。「Host」設置為 $proxy_host 變數,「Connection」設置為 close 。

要更改這些設置以及修改其他標頭欄位,請使用proxy_set_header指令。該指令可以在某個位置或更高位置指定。它也可以在特定的伺服器上下文或http塊中指定。例如:

在此配置中,「主機」欄位設置為$host變數。

要防止標頭欄位被傳遞到代理伺服器,請將其設置為空字元串,如下所示:

默認情況下,NGINX 緩沖來自代理伺服器的響應。響應存儲在內部緩沖區中,並且在收到整個響應之前不會發送到客戶端。緩沖有助於優化慢速客戶端的性能,如果響應從 NGINX 同步傳遞到客戶端,這可能會浪費代理伺服器的時間。但是,當啟用緩沖時,NGINX 允許代理伺服器快速處理響應,而 NGINX 存儲響應的時間與客戶端下載它們所需的時間一樣長。

負責啟用和禁用緩沖的指令是proxy_buffering。默認情況下,它設置為 on 並啟用緩沖器。

該proxy_buffers指令控制規模和分配的請求緩沖區的數目。來自代理伺服器的響應的第一部分存儲在單獨的緩沖區中,其大小由proxy_buffer_size指令設置。這部分通常包含一個相對較小的響應頭,並且可以做得比其餘響應的緩沖區小。

在以下示例中,緩沖區的默認數量增加了,並且響應的第一部分的緩沖區大小小於默認值。

如果禁用緩沖,則在從代理伺服器接收響應的同時將響應同步發送到客戶端。對於需要盡快開始接收響應的快速交互客戶端,此行為可能是可取的。

要在特定位置禁用緩沖,請將proxy_buffering指令放在帶有參數的位置 off ,如下所示:

在這種情況下,NGINX 僅使用proxy_buffer_size配置的緩沖區來存儲響應的當前部分。

反向代理的一個常見用途是提供負載平衡。閱讀免費的選擇軟體負載均衡器的五個理由電子書,了解如何通過快速部署來提高功能、性能和專注於您的應用程序。

如果您的代理伺服器有多個網路介面,有時您可能需要選擇特定的源 IP 地址連接到代理伺服器或上游。如果 NGINX 後面的代理伺服器配置為接受來自特定 IP 網路或 IP 地址范圍的連接,這可能很有用。

指定proxy_bind指令和必要網路介面的 IP 地址:

IP 地址也可以用變數指定。例如, $server_addr 變數傳遞接受請求的網路介面的 IP 地址:

簡單來說,把網路首頁代理到/test路徑,同時把java代理到/testapi,配置如下:

參考鏈接:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

歡迎大家提出不一樣的觀點,我們一起討論,

我是辣個男人,一個運維人。

㈣ Nginx的反向代理跨域

什麼是跨域?

跨域是指a頁面想獲取b頁面資源,如果a、b頁面的協議、域名、埠、子域名不同,或是a頁面為ip地址, b頁面為域名地址,所進行的訪問行動都是跨域

瀏覽器為了安全問題一般都限制了跨域訪問,也就是不允許跨域請求資源

同ip(或domain),同埠,同協議視為同一個域,一個域內的腳本僅僅具有本域內的許可權,可以理解為本域腳本只能讀寫 本域內的資源,而無法訪問其它域的資源。這種安全限制稱為同源策略

現代瀏覽器在安全性和可用性之間選擇了一個平衡點。 在遵循同源策略的基礎上,選擇性地為同源策略「開放了後門」。例如img script style等標簽,都允許垮域引用資源,然而, 你也只能是引用這些資源而已,並不能讀取這些資源的內容

同源策略限制以下幾種行為:

1.Cookie、LocalStorage 和 IndexDB 無法讀取

2.DOM 和 Js對象無法獲得

3.AJAX 請求不能發送

http://www.domain.com/a.jshttp://www.domain.com/b.js 同一域名,不同文件或路徑 允許http://www.domain.com/lab/c.jshttp://www.domain.com:8000/a.jshttp://www.domain.com/b.js 同一域名,不同埠 不允許http://www.domain.com/a.jshttps://www.domain.com/b.js 同一域名,不同協議 不允許http://www.domain.com/a.jshttp://192.168.4.12/b.js 域名和域名對應相同ip 不允許http://www.domain.com/a.jshttp://x.domain.com/b.js 主域相同,子域不同 不允許http://domain.com/c.jshttp://www.domain1.com/a.jshttp://www.domain2.com/b.js 不同域名 不允許

1、 通過jsonp跨域

2、 document.domain + iframe跨域

3、 location.hash + iframe

4、 window.name + iframe跨域

5、 postMessage跨域

6、 跨域資源共享(CORS)

7、 nginx代理跨域

8、 nodejs中間件代理跨域

9、 WebSocket協議跨域

正向代理 :代理位於網站和客戶端中間, 客戶端無法訪問某網站,就將請求發送給代理伺服器,代理從網站取回來再發送給客戶端,網站並不知道為誰提供服務

反向代理 :客戶端訪問某網站的一個頁面, 但是網站並沒有,就偷偷從另外一台伺服器上取回來,然後作為自己的內容吐給用戶,用戶不知道真正提供服務的是誰

對於瀏覽器來說,訪問的就是同源伺服器上的一個url。而nginx通過 檢測url前綴,把http請求轉發到後面真實的物理伺服器。並通過rewrite命令把前綴再去掉。這樣真實的伺服器就可以正確 處理請求,並且並不知道這個請求是來自代理伺服器的。

簡單說,nginx伺服器欺騙了瀏覽器,讓它認為這是同源調用,從而解決了瀏覽器的跨域問題。又通過重寫url,欺騙了真實 的伺服器,讓它以為這個http請求是直接來自與用戶瀏覽器的。

Location/carrots-admin-ajax/{

    proxy_passhttp://dev.admin.carrots.ptteng.com/;

}

proxy_pass 把請求代理到其他主機

兩種寫法hhttp://dev.admin.carrots.ptteng.com/    和     http://dev.admin.carrots.ptteng.com

    如果訪問url = http://server/html/test.jsp ,則被nginx代理後

        情況1,將test/作為根路徑,請求test/路徑下的資源。

        情況2,則被nginx代理後,請求路徑會變為http://proxy_pass/test.jsp,直接訪問server的根資源。

是一個匹配規則,用於攔截請求,匹配任何以/proxy/html/開頭的地址,匹配符合以後,停止往下搜索正則。

對於瀏覽器來說,訪問的就是同源伺服器上的一個url。而nginx通過檢測url前綴,把http請求轉發到後面真實的物理伺服器。並通過rewrite命令把前綴再去掉。這樣真實的伺服器就可以正確處理請求,並且並不知道這個請求是來自代理伺服器的。

簡單說,nginx伺服器欺騙了瀏覽器,讓它認為這是同源調用,從而解決了瀏覽器的跨域問題。又通過重寫url,欺騙了真實的伺服器,讓它以為這個http請求是直接來自與用戶瀏覽器的。

1.執行server塊的rewrite指令(這里的塊指的是server關鍵字後{}包圍的區域,其它xx塊類似)

2.執行location匹配

3.執行選定的location中的rewrite指令

如果其中某步URI被重寫,則重新循環執行1-3,直到找到真實存在的文件

如果循環超過10次,則返回500 Internal Server Error錯誤

7.參考文獻

參考一: https://www.cnblogs.com/gabrielchen/p/5066120.html

參考二: http://blog.csdn.net/shendl/article/details/48443299

8.更多討論

提問:

Q :例如img script style等標簽,都允許垮域引用資源?

A :在瀏覽器中,並且載入的方式其實相當於一次普通的GET請求,唯一不同的是,為了安全起見,瀏覽器不允許這種方式下對載入到的資源的讀寫操作,而只能使用標簽本身應當具備的能力(比如腳本執行、樣式應用等等)。

Q :例如img script style等標簽,都允許垮域引用資源?

A :在瀏覽器中,並且載入的方式其實相當於一次普通的GET請求,唯一不同的是,為了安全起見,瀏覽器不允許這種方式下對載入到的資源的讀寫操作,而只能使用標簽本身應當具備的能力(比如腳本執行、樣式應用等等)。

Q:JSONP和nginx跨域有什麼不同

JSONP和nginx是完全不同的 是可以跨域的,而且在跨域腳本中可以直接回調當前腳本的函數

原理:是可以跨域的,而且在跨域腳本中可以直接回調當前腳本的函數

script標簽是可以載入異域的JavaScript並執行的,通過預先設定好的callback函數來實現和母頁面的交互。它有一個大名,叫做JSONP跨域,JSONP是JSON with Padding的略稱。它是一個非官方的協議,明明是載入script,為啥和JSON扯上關系呢?原來就是這個callback函數,對它的使用有一個典型的方式,就是通過JSON來傳參,即將JSON數據填充進回調函數,這就是JSONP的JSON+Padding的含義。JSONP只支持GET請求。

閱讀全文

與nginx反向代理網址加密相關的資料

熱點內容
雲伺服器宕機概率 瀏覽:227
在線買葯用什麼app知乎 瀏覽:810
ubuntu解壓xz文件 瀏覽:674
宏傑加密時電腦關機 瀏覽:388
自己寫單片機編譯器 瀏覽:598
單片機按鍵閃爍 瀏覽:380
為什麼icloud總是顯連接伺服器失敗 瀏覽:888
如何設置域控伺服器 瀏覽:738
想在上海租房子什麼app好 瀏覽:184
編譯程序各部分是必不可少的嗎 瀏覽:885
編程不超過十行 瀏覽:763
數電編譯器的作用 瀏覽:337
時間演算法與現在有什麼區別 瀏覽:163
7zip解壓後沒文件夾 瀏覽:903
為什麼安卓送玫瑰ios收不到 瀏覽:9
美篇文章加密是什麼意思 瀏覽:82
ilasm編譯dll 瀏覽:39
呼吸燈單片機程序 瀏覽:954
linux域socket 瀏覽:250
qq分身怎麼樣才能加密 瀏覽:457