問題由來:瀏覽器拒絕執行其它網域名稱下的ajax運作
修改內容
這裡我本地模擬了ajax請求我的nginx伺服器獲得的頁面是
但是按住按鈕並不能載入出nginx返回的資料,而正常訪問nginx卻可以獲取資料
這是因為chrome拒絕執行ajax請求得到的返回值
此問題常見解決方案:
1、最常用的是,jsonp。此方案需要前後端共同協作來解決。
2、cors跨域,此方式非常優雅,是w3c組織制定的解決方案。為目前主流方案。方案流程如下圖:
當chrome發現ajax請求的**,與當前主網域名稱不一致(跨域)時,會在請求header中追加值頁面主網域名稱值,即:origin
nginx在接收到ajax請求時,會檢視origin值,即請求我的**是誰?
此處使用正則來校驗,nginx追加header值:access-control-allow-origin = (匹配所有)
chrome收到ajax返回值後,檢視返回的header中access-control-allow-origin的值,發現其中的值是,正是所有的頁面主網域名稱。這是允許訪問,於是執行ajax返回值內容。
流程:1、chrome以url1首次請求web伺服器,得到html頁面。
2、chrome再次發起url2資源請求,攜帶referers = url1。(注意,是url1,不是本次的url2)
3、nginx校驗referers值,決定是否允許訪問。
4、下面是nginx校驗referers值的過程:
valid_referers:匹配網域名稱白名單,如果不匹配,把內建變數$invalid_referers置為1,進入if塊,返回404
expires命令:過期時間
Nginx學習 九 使用ab壓力測試Nginx
測試環境 vmware建立的虛擬機器 2個cpu 3.7g記憶體 1 安裝httpd 2 模擬1000個使用者50000次請求nginx首頁 cd usr bin.ab c 1000 n50000 localhost 88 index.html 結果 server software nginx 1....
nginx 基礎學習篇
翻譯了官網nginx基礎篇章的英文,應該說對初學者非常有幫助 向nginx傳送訊號 nginx s signal signal有以下幾種 1.stop 快速關閉nginx伺服器 2.quit 等nginx處理完當前請求,關閉伺服器。執行該命令的人必須是啟動nginx的使用者 4.reopen 重開日...
Nginx學習之安裝篇
基於linux的安裝,本篇教程提供兩種安裝實現,儘管之前安裝過很多次,但是這裡還是做乙個整理。優點 不用擔心依賴關係 一鍵安裝。缺點 由於yum源的問題 nginx可能不是最新版本。安裝路徑不能自定義等問題。yum list nginx yum y install nginx whereis ngi...