baicai

白菜

一个勤奋的代码搬运工!

搭建反向代理サービス:Telegram Bot Api 反向代理搭建

上記の記事では、nginx と cloudflare workers を使用して構築された逆プロキシについて説明します。

この記事では、より簡単なコードを使用して構築します。

Cloudflare Workers を使用して逆プロキシサービスを構築する#

Cloudflare Workers を作成する手順はすべて同じですが、コードは異なります。

Worker の作成#

ホームページで Workers を選択し、初めて作成する場合は初期化し、無料プランを選択して Worker を作成します。

Worker の内容を編集する#

Worker に入り、クイックエディットをクリックし、以下のコードに変更し、ホスト名を自分のものに変更して保存してデプロイし、cdn の worker のような名前に変更できます。

// これはプロキシする必要があるウェブサイトです
const hostname = "https://example.domain"
// const hostname = "http://192.168.0.1"
// const hostname = "https://your.domain"
// const hostname = "https://your.domain/api/path"

function handleRequest(request) {
    let url = new URL(request.url);
    return fetch(new Request(hostname + url.pathname,request))
}

addEventListener("fetch", event => {
  event.respondWith(handleRequest(event.request))
})

ドメインに DNS を追加する#

ルーティングを追加し、次のように設定します。

これをステップ 1 で作成した Worker に向け、DNS が有効になるのを待ちます。

Vercel を使用して逆プロキシサービスを構築する#

github で新しいプロジェクトを作成します。
ファイルを作成し、vercel.json という名前を付け、以下の内容を入力します:

{
  "routes": [
    { "src": "/.*", "dest": "https://example.domain"}
  ]
}

vercel のバックエンドに入り、このプロジェクトをデプロイし、カスタムドメインを設定すると使用できます。

一般的なプロキシの json コンテンツの例:

{
  "routes": [
    { "src": "/redirect", "status": 308, "headers": { "Location": "https://example.domain/" } },
    { "src": "/custom-page", "headers": {"cache-control": "s-maxage=1000"}, "dest": "/index.html" },
    { "src": "/api", "dest": "/my-api.js" },
    { "src": "/users", "methods": ["POST"], "dest": "/users-api.js" },
    { "src": "/users/(?<id>[^/]*)", "dest": "/users-api.js?id=$id" },
    { "src": "/legacy", "status": 404},
    { "src": "/.*", "dest": "https://example.domain/"}
  ]
}

Nginx を使用してウェブサイトを逆プロキシする#

設定ファイルの作成#

nano /etc/nginx/conf.d/tgapi.conf

以下の内容を入力し、保存します。

server {
    listen 80;
    server_name tgapi.domain;
    location / {
       return 444;
    }
    location ~* ^/bot {
        resolver 8.8.8.8;
        proxy_buffering off;
        proxy_pass      https://example.domain$request_uri;
    }
}
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。