Nginxの基本インストールでは、sites-available
フォルダーにはファイルが1つだけあります:default
sites-available
フォルダーは機能しますが、それを使用して複数の(別個の)Webサイトをホストするにはどうすればよいですか?
別のアプローチを追加するだけで、ホストしている仮想ドメインまたはサイトごとに個別のファイルを使用できます。デフォルトのコピーをそれぞれの開始点として使用し、サイトごとにカスタマイズできます。
次に、サイト対応のシンボリックリンクを作成します。この方法で、シンボリックリンクを追加または削除し、サービス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
はオフラインであることに注意してください。
nginx.conf
を見ると、sites-enabled
ディレクトリのすべてのファイルを含む include
ディレクティブが見つかります。このディレクトリには、構成の一部のオンとオフを切り替えるのに便利なように、sites-available
からの構成ファイルへのシンボリックリンクが格納されます。
ご覧のとおり、これらのディレクトリには魔法はありません。
複数のWebサイトをホストする場合は、複数の server
ブロックおよび/または server_name
ディレクティブを使用する必要があります。公式チュートリアルはこちらです: サーバー名 および nginxがリクエストを処理する方法 。
有効なサイトに利用可能なサイトからデフォルトファイルをシンボリックリンクします。次に、使用可能なサイトを変更して、それぞれ異なる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/;
}
}