Nginx フォワード プロキシはクロスドメインの問題を解決します

原理

クロスドメインを解決するための nginx の原理をよりよく理解するために、まずクロスドメインがどのように生成されるかを理解しましょう。
ブラウザの同一オリジンポリシーにより、クロスドメインが発生します。たとえば、送信される非同期リクエストは、2 つの異なるポート、2 つの異なるプロトコル、または異なるドメイン名など、2 つの異なるソースからのものです。セキュリティ上の理由から、ブラウザは同一生成元ポリシーを生成し、同じ場所からのもの以外のポリシーは対話できません。同一オリジン ポリシーはブラウザ内にのみ存在します。つまり、ブラウザはサーバーと通信するときに同一オリジン ポリシーに従う必要があり、サーバーとサーバーの間で同一オリジン ポリシーに従う必要はありません。Nginx はブラウザとサーバーの間のプロキシ サーバーとして機能し、ブラウザと同じソースからのデータ送信を可能にします。

構成

1. まずリクエストインターフェイスを分析します

 axios.get('http://www.aaa.com:8081/api/blog/getList').then(res=>{
    
    
          console.log(res)
        })

ここで要求されるサーバー インターフェイス アドレスは http://localhost:8081/api/blog/getList であり、nginx を構成できます。

2. リクエストを Web サイトと同じ送信元アドレスに変更します。

現在リクエストを送信している Web サイトのアドレスが http://www.aaa.com (デフォルトのポート 80) であると仮定すると、リクエストのアドレスを Web サイトと同じ発信元のアドレスに変更します。

 axios.get('http://www.aaa.com/api/blog/getList').then(res=>{
    
    
          console.log(res)
        })

3. /…/nginx/conf ディレクトリで nginx.conf ファイルを見つけ、設定用のファイルを入力します

http      
{
    
    
	...
	server
	{
    
    
	    #表示监听发送请求的地址(www.aaa.com:80)
        listen       80; 
        server_name  www.aaa.com;
        #如果监听到请求接口地址是 www.aaa.com/api/blog/getList ,nginx就向http://www.aaa.com:8081/api/blog/getList 这个地址发送请求
        location /api/ {
    
     #判过滤出含有api的请求
            proxy_pass http://www.aaa.com:8081; #真实服务器的地址
        }
 	}
}

最も単純な構成がここに実装されています。より具体的な構成プロパティが必要な場合は、nginx 構成の詳細を参照してください。

4. 構成ファイル (nginx.conf) をテストし、nginx を再起動します。

4.1. テスト設定ファイル:

nginx -t

4.2. 次のステートメントを実行して nginx を再起動します

nginx -s reload

また

#停止nginx
nginx -s stop
#启动nginx
nginx

上記の操作を完了してリクエストを送信すると、データが正常に取得できます。これにより、nginx のフォワード プロキシが実現され、クロスドメインの問題が解決されます。

おすすめ

転載: blog.csdn.net/jiangjunyuan168/article/details/124293287