World Wide Webホスティング2

私の小規模なホスティングに関する最初の記事は2010年に公開されました。

それからほぼ2年が経過し、サーバーの追加と変更、構造の変更、テクノロジーの変更が行われました。 現時点では、ノボシビルスクに移動する準備をしており、小さなホスティングの地図とトリックを明らかにすることにしました。

この記事は、通常の「外部」インターネットがまだ存在しない広大な地域の専門家、比較的安価な機器で負荷分散を行うホスティングを構築したい人にとって興味深いものです。



主に、「カモミール」ホスティングは、バインドおよびNginx DNSサーバーの組み合わせの独特な実装によって区別されます。

画像

バインド


バインドは、ビューのような素晴らしいものを使用します。 事前定義されたさまざまな宛先が特定のDNSレコードを報告できるようにします。 たとえば、リクエストがゾーン1.2.3.0/24から送信された場合、somehost.hostはアドレス1.2.3.4を返します。 ゾーン2.3.4.0/24からの場合、アドレスは2.3.4.5です。

ヤクーツクは、Backbon(プロバイダーのグループ)とPeering(Rostelecom)の2つのメインゾーンに分かれています。 それらの間では、トラフィックは1 Mbあたり7コペックです。 したがって、サーバーが1つのゾーンにある場合は、2番目のゾーンからクライアントに支払われます。 地元のホスティング業者は、www2.some.hostやその他の松葉杖を導入して7セントで戦いました。 このメソッドはユーザーに対して透過的です。

named.conf.local構成の例:



acl rtk {

1.2.3.0/24;

};

acl bbn {

2.3.4.0/24;

};



「bbn」を表示{

マッチクライアント{bbn; };



ゾーン「host.net」{

タイプマスター;

ファイル「/etc/bind/bbn/db.host.net」; };



include "/etc/bind/named.conf.default-zones";

};



「rtk」を表示{

マッチクライアント{rtk; };



ゾーン「host.net」{

タイプマスター;

ファイル "/etc/bind/rtk/db.host.net"; };



include "/etc/bind/named.conf.default-zones";

};

「any」を表示{

match-clients {any; };



ゾーン「host.net」{

タイプマスター;

ファイル "/etc/bind/any/db.host.net"; };



include "/etc/bind/named.conf.default-zones";

};



ゾーンファイルは標準ですが、異なるディレクトリに配置されます。

マイナスの1つ-ファイルは手動で編集されます。 ビューを制御するための健全な管理パネルはまだ見ていません。

このトリックは、現在のアドレスの代わりに、左側のアドレスの特定の構造を表示するために使用できます。 しかし、私はあなたに言わなかった;)



Nginx


まず、Nginxは重いApacheのフロントエンドとして立ちました。 その後、Nginxのアイデアが生まれ、一般的に別のサーバーで作成されました。 プロキシサーバーは静的メディアコンテンツ(mp3、avi、flv、jpg、pngなど)をキャッシュし、残りの要求(php、cssなど)をApacheに送信します。

現時点では、ファイルとデータベースを備えたメインサーバーは、ほとんど誰にとっても未知の場所に保管されています。 それらとフロントエンドの間で、VPNトンネルがHamachiを介して発生します。 なぜそんなに難しいの?

現在、小規模なホスティングはプロバイダーから独立しています。 通信チャネルを変更し、DNSレコードを更新し、VPNを再構成しました。今では、IPアドレスでさえブロックすることを恐れていません。 利益! ;)

config sites-enabled / host.nameの例:



サーバー{

80を聞きます。

server_name

www.host.net host.net;

access_log /var/log/nginx/host.net.access.log;

error_log /var/log/nginx/host.net.error.log;



場所/ {

proxy_pass 5.6.7.8:80 /;

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_redirect off;

}



location〜*。(jpg | png | gif | jpeg | mp3 | mp4 | wav | mov | avi)$ {

proxy_cache_valid 200 20000m;

有効期限は30日です。

proxy_pass 5.6.7.8:80;



proxy_set_header Host $ host;

proxy_set_header X-Real-IP $ remote_addr;

proxy_cache pagecache;

}



Apacheでrpathを有効にすることを忘れないでください。



まとめ


不器用な手が原因でシステムがクラッシュすることがあります(すべてのファイルのシリアルを更新するのを忘れた、構成内のアドレスを間違えたなど)。 しかし、それは機能し、いくつかのプロジェクトを満足させます。

UPD Proxy0はそうでない場合があります。 エッジフロントエンドからの要求は、一般にNATの背後にあるルートサーバーに直接送信できます。



All Articles