GNU/Linux >> Linux の 問題 >  >> Linux

Linuxサーバーでnginxを使用してサブドメインまたは複数のドメインをホストする方法

ご存知ですか?nginxサーバーブロック(またはApacheの仮想ホスト)を介して、Linuxで単一のIPアドレスを使用して複数のドメインとサブドメインをホストできますか?

その方法がわからない場合は、このチュートリアルを読むと、2つのドメインと1つのサブドメインがセットアップされ、両方とも同じサーバー上の同じIPアドレスとホストを指します。
この設定の一般的な前提条件は次のとおりです。

  • IPアドレス 220.168.32.101
  • ドメイン名 example.com、blog.example.com、fakenews.com

チュートリアルを開始する前に、最初に行う必要があるのは、すべてのドメインとサブドメインをDNSプロバイダー経由で単一のIPアドレスにポイントすることです( A を編集) 、 CNAME )。
ただし、これをローカルでテストする場合は、 / etc / hostsを編集してください。 構成ファイルを追加し、以下を追加します:

220.168.32.101 example.com blog.example.com
220.168.32.101 fakenews.com

また、これらのドメインをサーバー上でローカルにpingすると、ok(200)応答が返されます。

次に、次の手順に従ってこれらのドメイン名を設定します。

1。 nginxをインストールして起動します

次のコマンドを使用して、ubuntuにnginxをインストールします

$ sudo apt install nginx
# now start it
$ sudo nginx

2。 nginxをテストする

ブラウザのドメインまたはIPアドレスのいずれかをチェックして、nginxが正しく機能することを確認します。ブラウザはデフォルトのnginxページを出力します。

3。各ドメインのテストディレクトリを設定します

これまで、すべてのドメインが正しく設定されていましたが、1つの大きな問題があり、すべてが同じページを指しています。独自のページを指すように、これらのドメインを分離する必要があります。このために、テストディレクトリとHTMLページを設定します。

  • 各ドメインとサブドメインのディレクトリを作成する
$ cd /var/www
$ sudo mkdir example.com blog.example.com fakenews.com
  • それぞれに簡単なHTMLページを作成する
$ sudo touch example.com/index.html
$ sudo touch blog.example.com/index.html
$ sudo touch fakenews.com/index.html
  • 最後に各index.htmlにいくつかの異なるコンテンツを配置します ファイル

4。ドメインとサブドメインごとにサーバーブロックを作成する

Nginxはデフォルトを提供します / etc / nginx / sites-availableのサーバーブロック 。ドメインごとにそのサーバーブロックをコピーし、それぞれに変更を加えます。
また、新しいファイルのシンボリックリンクを作成します

## For example.com domain
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
## similarly do for others also.

変更後、 example.comの新しいファイルは次のようになります。 ドメイン

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/example.com;
        index index.html;
        server_name example.com;
}

ここでdefault_server つまり、他のドメインが解決されない場合、最後の手段はこのサーバーブロックを解決することです。

注:nginxには、同じポートを持つデフォルトのサーバーブロックが1つだけあります。

同様に、他の2つのドメインの構成は次のとおりです。

## For blog.example.com subdomain
server {
        listen 80;
        listen [::]:80;
        root /var/www/blog.example.com;
        index index.html;
        server_name blog.example.com;
}

## For fakenews.com domain
server {
        listen 80;
        listen [::]:80;
        root /var/www/fakenews.com;
        index index.html;
        server_name fakenews.com;
}

ボーナス: fakenews.comを想定します ドメインは別のポートでリッスンします(たとえば 2368 ポート )そしてnginxのポートをデフォルトの 80にプロキシしたい ポートの場合、場所を使用できます サーバー内のブロック このようにブロックします:

server {
   ## other configuration as above
    # ...
  location {
     proxy_pass http://127.0.0.1:2368;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header HOST $http_host;
  }
}

現時点では、以下のコメントで質問があれば、これですべてです。


Linux
  1. LinuxにNginxWebサーバーをインストールする方法

  2. Rsyslogを使用して集中ログサーバーをセットアップする方法

  3. LinuxでパスワードなしのSSHを設定する方法

  1. Chronyを使用してLinuxサーバーで時刻を同期する方法

  2. Nginx仮想ホスト(サーバーブロック)を作成する方法

  3. 仮想ホストを使用して複数のドメインにサービスを提供

  1. Linux VPSでCS:GOサーバーを作成する方法

  2. AmazonAWSでLinuxサーバーをセットアップする方法

  3. CloudStatsを使用してLinuxサーバーを監視する方法