nginxサブドメインの書き換え


8

さらに別のnginx書き換えルールの質問

からhttp://www.*.domain.comに書き換える方法を教えてくださいhttp://*.domain.com

前もって感謝します

-Deb

編集:

テキスタイルフォーマットが質問から*を削除していないのを確認できなかったのは残念です。今直した。私がする必要があるのは、www.joe.domain.comからjoe.domain.comに行くことです。

回答:


7

domain.comの前の余分な期間の意味は何ですか?URLからwwwを削除することが目的ですか?もしそうなら、これはトリックをする必要があります:

if ($host ~* www\.(.*)) {
  set $host_without_www $1;
  rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo'
}

sudo /etc/init.d/nginx restartそれをロードすることを忘れないでください

出典:NGINX Wiki


テキスタイルフォーマットが質問から*を削除したことを確認できなかったのは残念です。私がする必要があるのは、www.joe.domain.comからjoe.domain.comに行くことです。だからあなたは正しい、私はwwwを削除する必要があります。
DEB

12

それはかなりハックです。

パフォーマンスの賢い最速の方法は

server {
  server_name www.domain.com;
  rewrite ^ http://domain.com$request_uri permanent;
}

正規表現の一致と2つのキャプチャを保存すると、ハッシュテーブルを使用して一致するサーバーブロックを検索するnginxの利点が得られます。

また、nginxを再起動する必要はありません-必要なのはリロードだけで、必要以上のダウンタイムを必要とする人はいますか?


+1は理にかなっています...歓声
iainlbc

1
これはハックではありません。Nginxはサーバー名を非常に高速に検索するため、これが本当に最速のアプローチです。
アレクサンダーアザロフ

1
@Alazそれはiainlbcによって提供された回答への応答でした、私はif条件がハックであり、私が推奨するサーバーのルックアップではなかったことを意味しました。
マーティンフィヨルドヴァルト


1

数百のドメインを取得するまで、Martin Fのソリューションはすべてうまく機能しています。ただし、私は逆の方向に進むことをお勧めします。www.joe.domain.comでアプリを提供し、joe.domain.comからリダイレクトします。RFCに含まれていることを確認してください。


nginxでその数のドメインを処理できる場合は、構成を生成するスクリプトを記述します。これは非常に単純な構成言語であり、トラフィックの多いサーバーでページが読み込まれるたびに正規表現解析を実行したくありません。
マーティンフィヨルドヴァルト

原則として、たぶん、あなたはそれをプロファイルしましたか?すべてのリクエストに正規表現を使用する非常に負荷の高いサイトがいくつかあります。お世話になります。また、多くの共有ホスティング環境には、深刻なパフォーマンスの問題はありませんが、管理オーバーヘッドの問題があります。どちらのソリューションも、異なるパラメーター内でうまく機能します。
ジャスティンアランライアン

何百ものドメインがある場合は、server_nameでregexpを使用します。stackoverflow.com/ questions
subdomain
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.