利用nginx 反向代理本地解決跨域問題

原文網址: http://www.cnblogs.com/bninp/p/5694277.html

利用nginx 反向代理解決跨域問題

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

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

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

結合之前 《angularjs+webapi2 跨域Basic 認證授權》的案例,對跨域的方式進行改造一下。

一.靜態頁面服務器

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

沒有了跨域問題。 這裏因爲我之前登陸過 並記錄了 token 所以沒有提示登錄

小結:寫得不是很細,當作筆記,如傷過客,誠摯抱歉。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章