免責聲明: 本文檔可能包含第三方產品資訊,該資訊僅供參考。阿里雲對第三方產品的效能、可靠性以及操作可能帶來的潛在影響,不做任何暗示或其他形式的承諾。
概述
本文主要介紹在Linux執行個體中如何配置Web網站及綁定網域名稱。
詳細資料
本文主要介紹如下幾點內容,您可以根據實際需要選擇。
- Nginx服務綁定網域名稱
- Tomcat服務綁定網域名稱
- Apache服務綁定網域名稱
- Apache服務配置實現多網域名稱跳轉
- Apache服務配置次層網域
- Apache禁止未經許可的網域名稱訪問ECS執行個體上的網站
Nginx服務綁定網域名稱
如下為配置Nginx服務綁定網域名稱的步驟,此處的Nginx程式以通過Yum安裝的Nginx為例,您需要根據實際情況進行調整。
- 執行如下命令編輯Nginx的設定檔。
vi /etc/nginx/nginx.conf
- 將預設的“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
目錄。
- 訪問www.123.com地址時,等於訪問
- 按 Ecs 鍵退出編輯模式,輸入 :wq 儲存並退出。
- 執行如下命令,重啟Nginx服務。
nginx -s reload
Tomcat服務綁定網域名稱
如下為配置Tomcat服務綁定網域名稱的步驟,其中部分與Tomcat相關的路徑,您需要根據實際情況進行調整。
- 執行如下命令,編輯Tomcat 設定檔。
vi /[$Tomcat_Home]/conf/server.xml
註:[$Tomcat_Home]指Tomcat程式的主目錄。
- 找到如下的預設配置。
- 將上述內容修改為如下配置。
<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 "%r" %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 "%r" %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 "%r" %s %b" />
</Host>註:此處的配置主要實現如下兩點目的。您需要根據實際需要調整對應的配置內容。
- 訪問www.abc.com地址時,等於訪問
/data/wwwroot/default
目錄。 - 訪問www.123.com地址時,等於訪問
/data/wwwroot/web
目錄。
- 訪問www.abc.com地址時,等於訪問
- 按 Ecs 鍵退出編輯模式,輸入 :wq 儲存並退出。
- 執行如下命令,關閉Tomcat服務。
/[$Tomcat_Home]/bin/shutdown
- 執行如下命令,啟動Tomcat服務。
/[$Tomcat_Home]/bin/startup
Apache服務綁定網域名稱
如下為配置Apache服務綁定網域名稱的步驟,此處的Apache程式以一鍵安裝包配置的Apache為例,您需要根據實際情況進行調整。
- 執行如下命令,進入Apache網站設定檔目錄。
cd /alidata/server/httpd/conf/vhosts/
- 執行
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"註:您需要修改對應的日誌名字以區分不同網站的日誌資訊。
- 執行如下命令,重啟Apache服務。
/alidata/server/httpd/bin/apachectl restart
Apache服務配置實現多網域名稱跳轉
假設網站的目錄為/var/www/html
,網站目錄結構如下。
開啟Apache的虛擬機器主機功能,參考如下圖,配置虛擬機器主機到對應的目錄即可。
修改完成後,可以實現如下幾點效果。
- 訪問a.xxxx.com地址時,等於訪問
/var/www/html/a
目錄。 - 訪問b.xxxx.com地址時,等於訪問
/var/www/html/b
目錄。 - 訪問c.xxxx.com地址時,等於訪問
/var/www/html/c
目錄。
Apache服務配置次層網域
在參考如下步驟配置次層網域前,您需要有一個泛網域名稱解析的頂級網域名稱,比如“aliyun.com”。
- 在Apache的httpd.conf設定檔中啟用mod_rewrite模組。
- 在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服務組態檔所在路徑,您需要根據實際情況修改。 - 在
/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註:請注意保持 網域名稱+空格+絕對路徑 的格式。
- 在
/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
目錄。
- 訪問www.aliyun.com地址時,等於訪問
- 您可以通過修改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的虛擬機器主機功能變通的解決該問題。
- 此處涉及的樣本資訊如下。
Apache版本號碼 ECS執行個體上的網站 2.2.15 http://www.abc.com/
http://www.123.com/ - 參考該命令
vi /etc/httpd/conf/httpd.conf
,開啟Apache的設定檔,參考如下內容進行編輯。
- 加入如下代碼,使Apache啟用基於主機名稱的虛擬機器主機功能。
NameVirtualHost *:80
- 加入如下代碼。當用戶端訪問的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> - 加入如下代碼。告知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>
- 加入如下代碼,使Apache啟用基於主機名稱的虛擬機器主機功能。
- 執行如下命令,重啟Apache服務。
/etc/httpd/bin/apachectl restart
- 如果您希望其他網域名稱在訪問您的網站時直接返回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> - 重啟Apache服務。
適用於
- Elastic Compute Service