如何使用 NGINX 和 DDNS 設定子域

如何使用 NGINX 和 DDNS 設定子域

我已經在 No-IP 上註冊了一個 ddns 子網域:example.ddns.net 我將 No-IP 設定為映射到路由器的 IP,該路由器將連接埠轉送到我的 NGINX Web 伺服器。我想要一個單獨的 Web 伺服器,我託管在該伺服器上,web1.example.ddns.net指向/var/www/web1.我不知道的是如何告訴 NGINX/var/www/web1在從web1.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 存取伺服器並透過單獨的電腦存取網頁。任何人都可以提供一些有關如何解決此問題的說明嗎?

答案1


下面的答案是相當基本的。因此,如果我重複了您已經知道的任何內容,請原諒我。 =)


我已在 No-IP 上註冊了 DDNS 子網域:example.ddns.net。 [...] 我想要一個單獨的 Web 伺服器,我在該伺服器上託管web1.example.ddns.net指向/var/www/web1.

要注意的是,如果你還沒有這樣做,你需要先做 ex。web1.example.ddns.net使用 No-IP 並將其指向您的伺服器。否則,伺服器配置並不重要,因為沒有人能夠透過該位址聯繫伺服器。

我不知道的是如何告訴 NGINX/var/www/web1在從web1.example.ddns.net.

您真正需要的只是基本的伺服器區塊。抄襲 NGINX 預設範例:

前任。範例.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.netweb1.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/
    

    或透過您的作業系統推薦的任何方法。

  • 按照註釋中的建議運行nginx -t(例如sudo nginx -t),以確保 NGINX 不會遇到任何語法錯誤或其他問題。

  • 使用 ex 重新啟動 NGINX。sudo systemctl restart nginx

筆記

  • 上面的區塊丟棄了 IPv6(這對於測試來說可能不是必需的)。

  • 這些範例都沒有使用default_server.

  • 每個相應的root條目都放置在一個location區塊中(即網站根目錄/)。

  • 上面的第二個伺服器區塊用作/var/www/web1for root/而不是web1.example.ddns.net),因為這是您最初在問題中指定的內容。無論如何,需要明確的是,root需要匹配實體檔案系統上的任何目錄結構。也就是說,它不必鏡像您的server_name,除非您實際上建立了名為 ex 的目錄(或類似目錄)。example.ddns.netweb1.example.ddns.net

  • 第一個伺服器區塊仍在使用/var/www/example.ddns.net,因此請確保這是儲存檔案的正確路徑example.ddns.net

  • 一般來說,對伺服器進行更改後,清除瀏覽器快取通常是明智的一步,這樣瀏覽器就不會返回舊資料。

相關內容