Nginx配置跨域請求

一、從nginx配置跨域請求別人的服務接口

1、如果前端應用向其他網站的API發送請求,則需要使用nginx作為反向代理服務器。首先需要在服務器上安裝nginx,並在nginx.conf文件中添加以下內容:

location /api/ {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    if ($request_method = 'OPTIONS') {
        return 204;
    }
    proxy_pass http://example.com/;
}

其中,/api/是本地服務器上的路徑,http://example.com/是遠程服務器上的路徑,這裡需要修改成實際的API路徑。

2、以上配置中的add_header將響應頭中的Access-Control-Allow-Origin屬性設置為任意域名,Access-Control-Allow-Methods屬性設置為GET、POST和OPTIONS方法,Access-Control-Allow-Headers屬性設置為允許的請求頭。如果請求方法為OPTIONS,則將響應狀態碼設置為204,表示已經接受請求。

3、在修改了nginx.conf之後,需要重新啟動nginx。

二、nginx設置跨域請求

1、如果前端應用向本地服務器發送請求,則需要將allow-origin設置為本地IP地址或域名,可以在nginx.conf文件中添加以下內容:

server {
     listen       80;
     server_name  localhost;
     location / {
         add_header 'Access-Control-Allow-Origin' 'http://127.0.0.1:8080'; # 允許所有的請求都會處理允許跨域 
         add_header 'Access-Control-Allow-Credentials' 'true';
         root   html;
         index  index.html;
     }
}

2、以上配置中的allow-origin將請求頭中的Access-Control-Allow-Origin屬性設置為本地IP地址或域名,並且設置Access-Control-Allow-Credentials為true,表示允許發送cookie。這裡設置為http://127.0.0.1:8080,需要修改成實際使用的地址和端口號。

3、在修改了nginx.conf之後,需要重新啟動nginx。

三、nginx怎麼配置域名

1、首先需要將域名指向服務器IP地址。

2、在nginx.conf文件中添加以下內容:

server {
     listen       80;
     server_name  example.com;
     location / {
         add_header 'Access-Control-Allow-Origin' 'http://example.com'; # 允許所有的請求都會處理允許跨域 
         add_header 'Access-Control-Allow-Credentials' 'true';
         root   html;
         index  index.html;
     }
}

3、以上配置中的server_name將請求頭中的Access-Control-Allow-Origin屬性設置為域名,並且設置Access-Control-Allow-Credentials為true,表示允許發送cookie。這裡設置為example.com,需要修改成實際使用的域名。

4、在修改了nginx.conf之後,需要重新啟動nginx。

四、正確的nginx跨域配置

1、正確的nginx跨域配置需要在請求頭中添加Access-Control-Allow-Origin、Access-Control-Allow-Credentials等屬性,這需要在nginx.conf文件中添加以下內容:

server {
     listen       80;
     server_name  example.com;
     location / {
         add_header 'Access-Control-Allow-Origin' 'http://example.com'; # 允許所有的請求都會處理允許跨域 
         add_header 'Access-Control-Allow-Credentials' 'true';
         add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
         add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
         add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
         root   html;
         index  index.html;
     }
}

2、以上配置中的add_header將響應頭中的Access-Control-Allow-Origin屬性設置為域名,Access-Control-Allow-Credentials屬性設置為true,Access-Control-Allow-Methods屬性設置為GET、POST和OPTIONS方法,Access-Control-Allow-Headers屬性設置為允許的請求頭,Access-Control-Expose-Headers屬性設置為響應頭中允許被訪問的屬性。

3、在修改了nginx.conf之後,需要重新啟動nginx。

五、前後端分離nginx配置詳解

1、前後端分離的情況下需要配置nginx將所有靜態資源、API請求等轉發至後端服務器,可以在nginx.conf文件中添加以下內容:

server {
    listen       80;
    server_name  example.com;

    location /api {
        proxy_set_header Host $host;  
        proxy_set_header X-Real-IP $remote_addr;  
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
        proxy_pass http://127.0.0.1:8000; 
    }

    location / {
        root   /home/user/example.com/build;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
}

2、以上配置中的location /api將請求轉發至API服務器,proxy_set_header設置請求頭,proxy_pass設置API服務器地址。location /將靜態資源轉發至/build文件夾下,如果找不到對應的文件則轉發至index.html。

3、在修改了nginx.conf之後,需要重新啟動nginx。

六、nginx跨域怎麼配置

1、nginx跨域配置需要在nginx.conf文件中添加以下內容:

server {
    listen      80;
    server_name example.com;

    location / {
        add_header  'Access-Control-Allow-Origin' '*';
        add_header  'Access-Control-Allow-Methods' 'GET, POST, DELETE, PUT, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers';
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain; charset=utf-8';
            add_header 'Content-Length' 0;
            return 204;
        }
     }
}

2、以上配置中的add_header將響應頭中的Access-Control-Allow-Origin屬性設置為任意域名,Access-Control-Allow-Methods屬性設置為GET、POST、DELETE、PUT和OPTIONS方法,Access-Control-Allow-Headers屬性設置為允許的請求頭,if語句用於處理預檢請求。

3、在修改了nginx.conf之後,需要重新啟動nginx。

七、nginx配置請求過濾

1、nginx可以過濾惡意請求,可以在nginx.conf文件中添加以下內容:

http {
    limit_req_zone $binary_remote_addr zone=black:10m rate=20r/m;

    server {
        listen 80;
        server_name example.com;

        location / {
            limit_req zone=black burst=5;
            proxy_pass http://upstream;
        }
    }
}

2、以上配置中的limit_req_zone指定限制訪問區域,$binary_remote_addr表示IP地址,zone=black表示黒名單,10m表示內存大小,rate=20r/m表示每分鐘限制20個請求。location /中的limit_req限制請求速率,burst定義在觸發限制前允許的突發數量,proxy_pass代表轉發至後端應用。

3、在修改了nginx.conf之後,需要重新啟動nginx。

八、nginx跨域配置詳解

1、通過以上幾種方法,nginx可以進行跨域配置。這些方法包括將請求轉發至其他服務器、設置請求頭中的Access-Control-Allow-Origin等屬性、設置允許的請求頭、過濾惡意請求等。根據具體的應用場景,選擇相應的方法進行配置。

2、在修改了nginx.conf之後,需要重新啟動nginx。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/254521.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-14 17:42
下一篇 2024-12-14 17:42

相關推薦

  • Java如何從Nginx下載文件

    本文將從以下幾個方面詳細介紹如何使用Java從Nginx下載文件。 一、準備工作 在Java中下載文件需要使用到Apache HttpClient庫,這個庫是一個基於Java的HT…

    編程 2025-04-27
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • NGINX權限被拒絕問題

    NGINX是一款常見的Web服務器軟件,但是在使用中常會遇到「permission denied」權限被拒絕的問題。下文將從多個方面介紹本問題和解決方法。 一、系統權限問題 1、檢…

    編程 2025-04-25
  • 關閉nginx命令詳解

    一、linux系統中關閉nginx命令 1、使用ps命令找到nginx的進程ID $ ps -ef | grep nginx 2、發送信號給nginx進程結束 $ kill -QU…

    編程 2025-04-25
  • 深入淺出:理解nginx unknown directive

    一、概述 nginx是目前使用非常廣泛的Web服務器之一,它可以運行在Linux、Windows等不同的操作系統平台上,支持高並發、高擴展性等特性。然而,在使用nginx時,有時候…

    編程 2025-04-24
  • nginx指定配置文件詳解

    一、配置文件介紹 nginx的配置文件主要由指令和塊組成,以「;」分號作為結束符號,以「{}」大括號作為塊的開始和結束標誌。 nginx的默認配置文件在安裝目錄下的conf文件夾中…

    編程 2025-04-24
  • 重啟nginx服務的命令詳解

    nginx是一個高性能的Web服務器,可通過重新啟動nginx服務來更新配置文件和釋放資源。本文將從多個方面詳細闡述如何重啟nginx服務,包括命令的使用、參數的說明等。 一、ng…

    編程 2025-04-24
  • Nginx$Host詳解

    一、什麼是Nginx$Host Nginx是一款輕量級的Web服務器,可以作為反向代理服務器、負載均衡服務器等。而Nginx$Host是Nginx中的一個特殊變量,它用於表示當前請…

    編程 2025-04-23
  • Mac Nginx詳細介紹

    一、安裝Nginx 安裝nginx最簡便的方法是使用Homebrew。執行以下命令來安裝Homebrew: /usr/bin/ruby -e “$(curl -fsSL https…

    編程 2025-04-23
  • 如何解決Windows下Nginx啟動一閃而過的問題

    一、Nginx 安裝及配置過程 Nginx是一款輕量級的Web服務器,可以用於反向代理、負載均衡、緩存等方面的應用,常用於Web應用的高並發場景。在Windows系統上,安裝ngi…

    編程 2025-04-23

發表回復

登錄後才能評論