上記の記事では、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;
}
}