web-dev-qa-db-ja.com

nginxおよびサイト上の複数のWebサイトが利用可能

Nginxの基本インストールでは、sites-availableフォルダーにはファイルが1つだけあります:default

sites-availableフォルダーは機能しますが、それを使用して複数の(別個の)Webサイトをホストするにはどうすればよいですか?

69
Kristian

別のアプローチを追加するだけで、ホストしている仮想ドメインまたはサイトごとに個別のファイルを使用できます。デフォルトのコピーをそれぞれの開始点として使用し、サイトごとにカスタマイズできます。
次に、サイト対応のシンボリックリンクを作成します。この方法で、シンボリックリンクを追加または削除し、サービスnginx reloadを発行するだけで、サイトを上下に移動できます。

クリエイティブを取得し、この方法を使用して、サイトのメンテナンス中にサイトをメンテナンスモードページにリダイレクトできます。

したがって、構造は次のようになります。

/sites-available/ (you can use obvious file names like this)
| 
|-> a.mysite.com
|-> b.mysite.com
|-> someOtherSite.com

/sites-enabled/ (these are just symlinks to the real files in /sites-available)
| 
|-> a.mysite.com
|-> b.mysite.com

最初の2つのエントリのみがsites-enabledのシンボリックリンクされたアイテムであるため、3番目のエントリsomeOtherSite.comはオフラインであることに注意してください。

86
Carlos

nginx.confを見ると、sites-enabledディレクトリのすべてのファイルを含む include ディレクティブが見つかります。このディレクトリには、構成の一部のオンとオフを切り替えるのに便利なように、sites-availableからの構成ファイルへのシンボリックリンクが格納されます。

ご覧のとおり、これらのディレクトリには魔法はありません。

複数のWebサイトをホストする場合は、複数の server ブロックおよび/または server_name ディレクティブを使用する必要があります。公式チュートリアルはこちらです: サーバー名 および nginxがリクエストを処理する方法

27
VBart

有効なサイトに利用可能なサイトからデフォルトファイルをシンボリックリンクします。次に、使用可能なサイトを変更して、それぞれ異なるserver_nameを持つ2つのサーバーブロックを含めます。以下を参照してください。これは、example.comおよびexample2.comというドメインが必要であることを前提としています。また、nginxをインストールしたサーバーのIPアドレスを@recordsにポイントしているはずです。

利用可能なサイトを有効なサイトにシンボリックリンクします

Sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

選択したエディターを使用してファイルを編集する(vim for me)

Sudo vi /etc/nginx/sites-available/default

ポート4567および4568でWebアプリを実行していると仮定した場合の、nginx confの動作内容を以下に示します。

server {

    server_name www.example.com

    location / {
        proxy_pass http://localhost:4567/;
    }

}


server {

    server_name www.example2.com

    location {
        proxy_pass http://localhost:4568/;
    }

}
18
jmontross