1. 程式人生 > >ngnix解決跨域訪問

ngnix解決跨域訪問

  說到nginx,不得不說真的很強大,也帶來很多便利用於解決一些頭疼的難題。

  一般來說可以用來做:靜態頁面的伺服器、靜態檔案快取伺服器、網站反向代理、負載均衡伺服器等等,而且實現這一切,基本只需要改改那萬能的配置檔案即可。

之前的博文記錄了作為負載均衡。這裡先記錄一下作為靜態頁面的伺服器和反向代理跨域的使用。

一.靜態頁面伺服器

nginx.conf 的配置(其實預設的也是如此,所以作為靜態伺服器只需要將靜態檔案移動到nginx下的html資料夾裡就可以了)

複製程式碼

server {
      listen       8094; #監聽埠
      server_name  localhost; #

      #charset koi8-r;

      #access_log  logs/host.access.log  main;

     location / {
          root   html;#檔案根目錄
          index  index.html index.htm;#預設起始頁
      }

        }
複製程式碼

然後開啟瀏覽器 輸入 localhost:8094 即可

2MU[LA7GS05[]15JD3[WH(Q

就是這麼簡單

二.反向代理伺服器-》跨域

之前我們跨域是藉助了瀏覽器對 Access-Control-Allow-Origin 的支援。但有些瀏覽器是不支援的,所以這並非是最佳方案

現在我們來利用nginx 通過反向代理 滿足瀏覽器的同源策略實現跨域

首先,我先註釋掉之前的跨域設定

image

image

然後訪問一下index1.html

image

提示了跨域問題

然後我們回到nginx.conf 配置一個反向代理路徑(新增紅色部分)

複製程式碼
server {
        listen       8094;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

       location / {
            root   html;
            index  index.html index.htm;
        }
        location /apis {
    rewrite  ^.+apis/?(.*)$ /$1 break;
    include  uwsgi_params;
       proxy_pass   http://localhost:1894;
       }
}
複製程式碼

配置說明:配置一個/apis  重寫到我們真正的api地址http://localhost:1894  形成一個代理的過程。

然後更改一下index1.html的api請求地址

image

這樣這個api的地址就跟當前頁面index1.html處於同源位置了。就是我們配置的nginx監聽地址 localhost:8094

然後我們再次在瀏覽器中訪問 index1.html   可能請求到的知識快取頁面 請清除快取或重啟nginx

image

相關推薦

ngnix解決訪問

  說到nginx,不得不說真的很強大,也帶來很多便利用於解決一些頭疼的難題。   一般來說可以用來做:靜態頁面的伺服器、靜態檔案快取伺服器、網站反向代理、負載均衡伺服器等等,而且實現這一切,基本只需要改改那萬能的配置檔案即可。 之前的博文記錄了作為負載均衡。這裡先記錄一下作為靜態頁面的伺服器和反向代理跨域

伺服器端解決訪問

跨域是頁面js請求ajax,js所在html的url與請求api,不在同一個域名下,跨域解決的思路。 1、伺服器端響應頭允許請求的url,即響應輸出允許訪問的域名; 2、請求由伺服器轉發,使用閘道器或者nginx對請求進行重定向。 具體方案: 1、php 在responce的header中輸

學習通過後端配置cors遊覽器解決訪問

學習通過後端配置cors遊覽器解決跨域訪問 現在的遊覽器ie10以上的都可以瀏覽器直接發出CORS請求。體來說,就是在頭資訊之中,增加一個Origin欄位。然後node後端 router.get('/getData', function(req, res, next) { //設

java設定響應頭,解決訪問限制

public class testFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse resp, FilterChain chain)

Django解決訪問報錯/Cros問題

兩種方法: 拼資料 def myview(_request): response = HttpResponse(json.dumps({"key": "value", "key2": "va

ionic解決訪問

如果你通過 ionic serve 或者 ionic run 命令使用或 live reload 或者訪問過外部 API 結點,那麼你肯定遇到過 CORS 問題,譬如下面這樣: XMLHttpRequest cannot load http://api.i

解決jquery ajax在訪問post請求的時候,ie9以下無效(包括ie9)的問題

jquery src actor div tick 屬性 dex 啟用 logs 最近在做項目的時候遇到一個問題,就是跨域請求ajax的時候ie9以下的瀏覽器不可以訪問,直接執行error裏面的代碼,但是也不報錯,就上網查了查,發現了一個很好用的方法,在這裏記錄一下,也希望

[轉]No 'Access-Control-Allow-Origin' header is present on the requested resource.'Ajax訪問解決方案

不能 ade 方式 ole 相同域名 all log head 允許 原 https://blog.csdn.net/zhoucheng05_13/article/details/53580683 No ‘Access-Control-Allow-Origin‘ heade

分享訪問解決方案與基礎分析

什麼是跨域訪問? 由於瀏覽器同源策略,凡是傳送請求url的協議、域名、埠三者之間任意一個與當前頁面地址不同即為跨域。存在跨域的情況: 網路協議不同,如http協議訪問https協議。 埠不同,如80埠訪問8080埠。 域名不同,如qianduanblog.com訪問baidu.com。

ajax訪問問題解決

本文為轉載的一篇ajax跨域訪問問題解決方案 知跨域而不知如何解決 知道問題的確切原因,剩下的就是找到解決問題的方法了。google了好久,再次在同事的指點下知道jQuery的ajax有jsonp這樣的屬性可以用來解決跨域的問題。 找到一種解決方式 現在也知

iframe 訪問session/cookie丟失問題解決方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

CORS解決ajax訪問問題---

/**  * 登入驗證  *   * @author ruoyi  */ @CrossOrigin(origins = "http://127.0.0.1:8020", maxAge = 36000) @Controller public

Shiro框架在CORS訪問中遇到的問題及解決

背景 最近做一個前後端分離的專案時,使用shiro做許可權管理時遇到跨域問題,這裡做一下記錄。   原因 後端通過Shiro配置URL過濾, shiroFilterFactoryBean.setLoginUrl("/unauth"); 預設對於沒有授權的訪問

【docker】elasticsearch-head無法連線elasticsearch的原因和解決,叢集健康值:未連線,ElasticSearch——訪問的問題

 環境 ==================== 虛擬機器啟動 centos 7  ip:192.168.92.130 elasticsearch 5.6.9   port:9200  9201 elasticSearch-head 5  p

Ajax訪問出現Uncaught SyntaxError: Unexpected token : 解決方案

在訪問外網提供的Api時出現跨域問題,嘗試使用普通方式JSONP解決,但是出現Uncaught SyntaxError: Unexpected token : 的錯誤,所有專注於研究ajax請求跨域問題,在前人基礎上逐漸理出脈絡,以此記之,希望對大家有所幫助。蒐羅資源比較雜亂,所有看到“

No 'Access-Control-Allow-Origin' header is present on the requested resource.'Ajax訪問解決方案

出現該錯誤是由於存在網站跨域訪問的問題。 什麼是網站跨域,簡單來講,當你通過ajax來請求或傳送資料時,兩個域名之間不能跨過域名來發送請求或者請求資料,瀏覽器會認為它是不安全的。 解決方式: 1、伺服器端解決方案 設定響應報文頭 response.setHeader

利用nginx解決vue的訪問問題

        vue在開發中,可以通過自帶的腳手架配置實現跨域訪問,但是打包時不會將這部分配置檔案載入,這樣會導致上了生產環境出現跨域訪問的問題。在網上查過一些解決跨域的問題,都沒太搞明白,然後就想採用nginx將服務請求轉發來實現,經過一天的摸索,終於搞定了。    

解決ajax訪問sessionid不一致問題

根據瀏覽器的保護規則,跨域的時候我們建立的sessionId是不會被瀏覽器儲存下來的,這樣,當我們在進行跨域訪問的時候,我們的sessionId就不會被儲存下來,也就是說,每一次的請求,伺服器就會以為是一個新的人,而不是同一個人,為了解決這樣的辦法,下面這種方法可以解決這種跨域的辦法。  

ajax訪問解決

ajax訪問域名遇見的跨域問題,在被訪問的nginx配置檔案上的http節點加上下面幾句話就好了。 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-

nginx 利用 proxy 反向代理解決 Ajax 訪問,瀏覽器不顯示跳轉後的連結

我們知道,利用nginx rewrite 可以重寫訪問連結,在後面加上last標籤就可以不在瀏覽器顯示跳轉後的連線。那麼如果要跨域跳轉呢? 如果還是使用rewrite,那麼nginx預設會重定向該連結。就算你後面加的last標籤也無濟於事,這樣瀏覽器就會顯示跳轉後的連結。Ajax開發中令人頭疼的問題