NGINXとDDNSでサブドメインを設定するにはどうすればいいですか

NGINXとDDNSでサブドメインを設定するにはどうすればいいですか

No-IP に ddns サブドメインを登録しました。No example.ddns.net -IP をルーターの IP にマップするように設定し、ポートを NGINX Web サーバーに転送します。 を指す別の Web サーバーをホストしたいと思っています。から呼び出されたときweb1.example.ddns.net/var/www/web1を指すように NGINX に指示する方法がわかりません。サーバーの設定方法について詳しく説明してくれる人はいますか?/var/www/web1web1.example.ddns.net

以下は私の設定です。example.ddns.netこの設定は にあり、/etc/nginx/sites-available/へのリンクがあります/etc/nginx/sites-enabled

server {
        listen 80 default_server;
        listen [::]:80 default_server;
       
        root /var/www/example.ddns.net;

        server_name example.ddns.net;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

}

以下は私の設定です。web1.example.ddns.netこの設定は にあり、/etc/nginx/sites-available/へのリンクがあります/etc/nginx/sites-enabled

server {
        listen 80;
        listen [::]:80;
       
        root /var/www/web1.example.ddns.net;

        server_name web1.example.ddns.net;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

}

変更したのはこれらのファイルだけです。次の NGINX サーバーは Ubuntu Server でホストされており、ssh 経由でサーバーにアクセスし、別のコンピューターから Web ページにアクセスしています。この問題を解決する方法について、どなたか説明していただけますか?

答え1


以下の回答はかなり基本的なものです。すでにご存知の内容について重複してもご容赦ください。=)


No-IP に DDNS サブドメインを登録しました: 。 [...]を指すexample.ddns.net別の Web サーバーをホストしたいと考えています。web1.example.ddns.net/var/www/web1

注意:まだ行っていない場合は、ex. をweb1.example.ddns.netNo-IP で作成し、サーバーにポイントする必要があります。そうしないと、そのアドレス経由では誰もサーバーに接続できないため、サーバー構成は重要ではなくなります。

/var/www/web1私が知らないのは、から呼び出されたときにNGINX に をポイントするように指示する方法ですweb1.example.ddns.net

本当に必要なのは基本的なサーバー ブロックだけです。NGINX のデフォルトの例から引用します。

例: example.ddns.net

server {
        listen       80;
        server_name  example.ddns.net;
        
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/example.ddns.net;
            index  index.html index.htm;
        }

        # error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

例: web1.example.ddns.net

server {
        listen       80;
        server_name  web1.example.ddns.net;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/web1;
            index  index.html index.htm;
        }

        # error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

基本的な手順

  • Ubuntu の場合、これらのサーバー ブロックを適切なsites-availableディレクトリ (例: /etc/nginx/sites-available/) の下に配置する必要があります (例:example.ddns.netおよび ) web1.example.ddns.net

  • 関連するシンボリックリンクをsites-enabled(例: /etc/nginx/sites-enabled/) に作成します。例:

    sudo ln -s /etc/nginx/sites-available/example.ddns.net /etc/nginx/sites-enabled/
    sudo ln -s /etc/nginx/sites-available/web1.example.ddns.net /etc/nginx/sites-enabled/
    

    または、OS で推奨されている方法を使用します。

  • コメントで提案されているようにnginx -t(例: )を実行し、NGINX で構文エラーやその他の問題が発生していないことを確認します。sudo nginx -t

  • 例: で NGINX を再起動しますsudo systemctl restart nginx

ノート

  • 上記のブロックは IPv6 をドロップします (これはテストではおそらく必要ないはずです)。

  • どちらの例でも は使用されませんdefault_server

  • それぞれのrootエントリはlocationブロック(つまり、Web サイトのルート/)内に配置されます。

  • 上記の 2 番目のサーバー ブロックでは、質問で最初に指定した が であるため、の/var/www/web1としてを使用します( ではありません)。いずれにしても、明確にするために、 は物理ファイル システム上のディレクトリ構造と一致する必要があります。つまり、たとえばや というディレクトリ (または同様のもの) を実際に作成していない限り、をミラーリングする必要はありません。root/web1.example.ddns.netrootserver_nameexample.ddns.netweb1.example.ddns.net

  • 最初のサーバー ブロックは引き続き を使用する/var/www/example.ddns.netため、 のファイルを保存している場所への正しいパスであることを確認してくださいexample.ddns.net

  • 一般的に、サーバーに変更を加えた後は、ブラウザが古いデータを返さないようにブラウザのキャッシュをクリアするのが賢明です。

関連情報