nginx + Apacheを使用した動的サブドメイン

このトピックは、サイト上の動的サブドメインの実装に関する別のトピックです。 インターネット上には多くのサブドメインがあり、ハブにはいくつかのトピックもあります。



問題は、この質問はサブドメインからフォルダーへのリダイレクトの観点からのみカバーされており、サブドメインの全体的なダイナミズムはフォルダーを作成したということです-サブドメインはあなたのために働いています。



別の問題の解決が必要になる場合があります。たとえば、ユーザープロファイルとそれに関連付けられているすべての機能をサブドメインに取り込むなどです。



たとえば、 www.example.com / users / usernameという URLでプロファイルが機能する既製のサイトがあり、あらゆる種類の追加機能があります(たとえば、 www.example.com / users / username / contactおよびその他の関連ページこのユーザー)。



そして、 username.example.comusername.example.com / contactなど、 ユーザーに関連するすべてのものをサブドメインに転送したいと思います



インターネットで見つかった解決策は、2つの理由で私を満足させませんでした。





私たちのサイトはapacheの上にnginxを持っています(他の多くのものと同様)ので、私はこの束を使って自分で車輪を再発明しなければなりませんでした







一般的に、ソリューションは簡単です-なぜなら サイトはすでにwww.example.com/users([a-zA-Z _] +)の形式のmod_rewriteリンク機能によって確立されているため、nginxを介してサブドメインを書き換えることが決定されました。



追加の条件は、サイトがww.example.comとしてのみ機能し、example.comがwwwにリダイレクトすることです。



したがって、サブドメインを書き換えるためにnginx configにルールを記述するだけです。 ルールはこのソリューションであることが判明しました-それは真実ではなく、それを使用することはお勧めしません

location / { proxy_pass http://11.22.33.44:8080; proxy_redirect http://www.example.com:8080/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; #     www set $uid "www"; #  uid   if ($host ~* "^(([a-z0-9\-]+)\.example\.com)$") { set $uid $2; } #     uid  www,  www    if ($uid !~ "^(www)$") { rewrite ^(.*)$ /users/$uid$1 break; } }
      
      





updトピックの公開後、 BlackWizardはすべての初期条件に適合する最適なソリューションを提案しました。

 server { server_name www.example.com; location / { proxy_pass 11.22.33.44:8080; } } server { server_name ~^(?<user>[a-z0-9\-]+)\.example.com$; location / { proxy_pass 11.22.33.44:8080/users/$user$uri$is_args$args; } }
      
      







したがって、訪問者がサブドメインに入った場合、nginxはこれを決定し、Apacheからwww.example.com/users/usernameの形式のアドレスを要求し、Apacheはmod_rewriteルールに従ってすべてをさらに解析します。



結果のソリューションには、次の利点があります。





短所:





一般的に、このソリューションは私にはかなり良いようでした。私はグルの推薦と批判に耳を傾ける準備ができています。なぜなら、私自身はWebサーバーの設定の初心者であり、おそらく私のような初心者には解決策が役立つでしょう



Webサーバー構成ですべての可能なドメインを指定せずにusername.example.comを機能させる方法をUPDします

サーバーが動的サブドメインを正しく処理するには、DNS設定に1つの小さなレコードを追加する必要があります。 これは、サーバーコントロールパネルを使用して実行できます。

次のA形式レコード(英語版では「Aレコード」)を追加するだけです。

* .example.com



エントリは、すべてのサブドメイン(メール、SMTPなど)の後に追加する必要があります



All Articles