阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

在Linux執行個體中如何配置Web網站及綁定網域名稱

更新時間: Aug 07, 2019

免責聲明: 本文檔可能包含第三方產品資訊,該資訊僅供參考。阿里雲對第三方產品的效能、可靠性以及操作可能帶來的潛在影響,不做任何暗示或其他形式的承諾。

 

概述

本文主要介紹在Linux執行個體中如何配置Web網站及綁定網域名稱。

 

詳細資料

本文主要介紹如下幾點內容,您可以根據實際需要選擇。

 

Nginx服務綁定網域名稱

如下為配置Nginx服務綁定網域名稱的步驟,此處的Nginx程式以通過Yum安裝的Nginx為例,您需要根據實際情況進行調整。

  1. 執行如下命令編輯Nginx的設定檔。
     vi /etc/nginx/nginx.conf 
  2. 將預設的“server {...}”配置段修改為如下內容。
     server {
    listen 80 default_server;
    server_name www.123.com;
    root /home/web1;
    location / {
    }
    error_page 404 /404.html;
    location = /40x.html {
    }
    error_page 500 502 503 504 /50.xhtml;
    location = /50x.html {
    }
    }
    server {
    server_name www.abc.com;
    root /home/web2;
    location / {
    }
    error_page 404 /404.html;
    location = /40x.html {
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
    }
    註:此處的配置主要實現如下兩點目的。您需要根據實際需要調整對應的配置內容。
    • 訪問www.123.com地址時,等於訪問/home/web1目錄。
    • 訪問www.abc.com地址時,等於訪問/home/web2目錄。

    您需要根據實際需要調整對應的配置內容。
  3. Ecs 鍵退出編輯模式,輸入 :wq 儲存並退出。
  4. 執行如下命令,重啟Nginx服務。
    nginx -s reload

 

Tomcat服務綁定網域名稱

如下為配置Tomcat服務綁定網域名稱的步驟,其中部分與Tomcat相關的路徑,您需要根據實際情況進行調整。

  1. 執行如下命令,編輯Tomcat 設定檔。
    vi /[$Tomcat_Home]/conf/server.xml
    註:[$Tomcat_Home]指Tomcat程式的主目錄。
  2. 找到如下的預設配置。
    62.png
  3. 將上述內容修改為如下配置。
     <Host name="localhost"    appBase="webapps"    unpackWARs="true"    autoDeploy="true">
    <Value className="org.apache.catalina.valves.AccessLogValue" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %c &quot;%r&quot; %s %b" />
    </Host>
    <Host name="www.123.com" appBase="/data/wwwroot/web" unpackWARs="true" autoDeploy="true">
    <Content path="" docBase="/data/wwwroot/web" debug="0" reloadable="false" crossContext="true" />
    <Value className="org.apache.catalina.valves.AccessLogValue" directory="logs" prefix="www.123.com_access_log." suffix=".txt" pattern="%h %l %u %c &quot;%r&quot; %s %b" />
    </Host>
    <Host name="www.abc.com" appBase="/data/wwwroot/default" unpackWARs="true" autoDeploy="true">
    <Content path="" docBase="/data/wwwroot/default" debug="0" reloadable="false" crossContext="true" />
    <Value className="org.apache.catalina.valves.AccessLogValue" directory="logs" prefix="www.abc.com_access_log." suffix=".txt" pattern="%h %l %u %c &quot;%r&quot; %s %b" />
    </Host>
    註:此處的配置主要實現如下兩點目的。您需要根據實際需要調整對應的配置內容。
    • 訪問www.abc.com地址時,等於訪問/data/wwwroot/default目錄。
    • 訪問www.123.com地址時,等於訪問/data/wwwroot/web目錄。

  4. Ecs 鍵退出編輯模式,輸入 :wq 儲存並退出。
  5. 執行如下命令,關閉Tomcat服務。
     /[$Tomcat_Home]/bin/shutdown 
  6. 執行如下命令,啟動Tomcat服務。
     /[$Tomcat_Home]/bin/startup

 

Apache服務綁定網域名稱

如下為配置Apache服務綁定網域名稱的步驟,此處的Apache程式以一鍵安裝包配置的Apache為例,您需要根據實際情況進行調整。

  1. 執行如下命令,進入Apache網站設定檔目錄。
    cd /alidata/server/httpd/conf/vhosts/
  2. 執行vi aa.conf命令建立一個設定檔,按 i 鍵進入編輯模式,複製並黏貼如下內容到aa.conf檔案中。
    Order allow,deny
    Deny from all
    DocumentRoot /alidata/www/test
    ServerName www.test.com
    ServerAlias test.com
    ErrorLog "/alidata/log/httpd/test-error.log"
    CustomLog "/alidata/log/httpd/test.log"
    註:您需要修改對應的日誌名字以區分不同網站的日誌資訊。
  3. 執行如下命令,重啟Apache服務。
    /alidata/server/httpd/bin/apachectl restart

 

Apache服務配置實現多網域名稱跳轉

假設網站的目錄為/var/www/html,網站目錄結構如下。
63.png

開啟Apache的虛擬機器主機功能,參考如下圖,配置虛擬機器主機到對應的目錄即可。
64.png
65.png
修改完成後,可以實現如下幾點效果。

  • 訪問a.xxxx.com地址時,等於訪問/var/www/html/a目錄。
  • 訪問b.xxxx.com地址時,等於訪問/var/www/html/b目錄。
  • 訪問c.xxxx.com地址時,等於訪問/var/www/html/c目錄。

 

Apache服務配置次層網域

在參考如下步驟配置次層網域前,您需要有一個泛網域名稱解析的頂級網域名稱,比如“aliyun.com”。

  1. 在Apache的httpd.conf設定檔中啟用mod_rewrite模組。
  2. 在httpd.conf設定檔的結尾處添加如下內容。
    RewriteEngine on
    RewriteMap lowercase int:tolower
    RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
    RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
    RewriteCond ${vhost:%1} ^(/.*)$
    RewriteRule ^/(.*)$ %1/$1
    註:/usr/local/etc/apache是Apache服務組態檔所在路徑,您需要根據實際情況修改。
  3. /usr/local/etc/apache路徑下執行vi vhost.map命令,建立檔案,並複製如下內容到該檔案中。
    www.aliyun.com /usr/local/www/data-dist/aliyun
    bbs.aliyun.com /usr/local/www/data-dist/aliyunbbs
    anyname.aliyun.com /usr/local/www/data-dist/anyname
    註:請注意保持 網域名稱+空格+絕對路徑 的格式。
  4. /usr/local/www/data-dist目錄下建立對應的網站目錄,比如aliyun、bbs、anyname等目錄。建立目錄後的效果如下。
    • 訪問www.aliyun.com地址時,等於訪問/usr/local/www/data-dist/aliyun目錄。
    • 訪問bbs.aliyun.com地址時,等於訪問/usr/local/www/data-dist/aliyunbbs目錄。
    • 訪問anyname.aliyun.com地址時,等於訪問/usr/local/www/data-dist/anyname目錄。
  5. 您可以通過修改vhost.map來增加、刪除或修改您的次層網域和所指向的實際路徑,不需要重啟Apache服務。

 

Apache禁止未經許可的網域名稱訪問ECS執行個體上的網站

如果ECS執行個體上的網站被人惡意指向,例如,您的執行個體IP地址為“123.123.123.123”,正常服務的網域名稱為“www.abc.com” , 惡意使用者使用其他的網域名稱,比如“www.fake.com”,指向“123.123.123.123”,此時訪問www.fake.com網站時會出現您的網站內容。您可以參考如下內容,可以通過Apache的虛擬機器主機功能變通的解決該問題。

  1. 此處涉及的樣本資訊如下。
    Apache版本號碼 ECS執行個體上的網站
    2.2.15 http://www.abc.com/
    http://www.123.com/

  2. 參考該命令vi /etc/httpd/conf/httpd.conf,開啟Apache的設定檔,參考如下內容進行編輯。
    1. 加入如下代碼,使Apache啟用基於主機名稱的虛擬機器主機功能。
      NameVirtualHost *:80
    2. 加入如下代碼。當用戶端訪問的Host名不在之後設定的網站網域名稱內時,會指向一個403錯誤頁面。其中DocumentRoot是放置錯誤提示頁面的目錄,在該目錄中可以放置一個簡單的HTML頁面提示使用者正在訪問非法網域名稱。
      <ViretualHost *:80>
      DocumentRoot /var/www/html/error/
      ServerName *
      ErrorLog logs/dummy-host.example.com-error_log
      CustomeLog logs/dummy-host.example.com-access_log common
      </ViretualHost>
    3. 加入如下代碼。告知Apache合法的網站主機頭,您需要根據實際情況修改這個代碼塊內容,如樣本中的“www.abc.com”和“www.123.com”。
      <VirtualHost *:80>
      ServerAdmin admin@abc.com
      DocumentRoot /var/www/html/another/
      ServerName www.abc.com
      ErrorLog logs/www.abc.com-error_loh
      CustomLog logs/www.abc.com-access_log common
      </VirtualHost>
      <VirtualHost *:80>
      ServerAdmin admin@123.com
      DocumentRoot /var/www/html/
      ServerName www.123.com
      ErrorLog logs/www.123.com-error_loh
      CustomLog logs/www.123.com-access_log common
      </VirtualHost>

  3. 執行如下命令,重啟Apache服務。
    /etc/httpd/bin/apachectl restart
  4. 如果您希望其他網域名稱在訪問您的網站時直接返回403錯誤,您可以修改第2步中的b步驟,將其代碼修改為如下內容。
    <VirtualHost *:80>
    DucumentRoot /var/www/html/error/
    ServerName *
    <Location>
    Order Allow, Deny
    Deny from all
    </Location>
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log commom
    </VirtualHost> 
  5. 重啟Apache服務。

 

適用於

  • Elastic Compute Service