1. 程式人生 > >apache基於域名和埠的虛擬主機

apache基於域名和埠的虛擬主機

轉自http://blog.chinaunix.net/space.php?uid=12247636&do=blog&id=2953447

為一個同事安裝apache+php+mysql環境,安裝完成後,apache啟動後反應非常慢,折騰了好幾天的時間都不見好,只能用自己的電腦當主機,讓她訪問進行工作,借鑑瞭如下這篇文章的內容,表示感謝

一.基於域名的虛擬主機是根據客戶端提交的HTTP頭中標識主機名的部分決定的。使用這種技術,很多虛擬主機可以共享同一個IP地址。基於域名的虛擬主機相對比較簡單,因為你只需要配置你的DNS伺服器將每個主機名對映到正確的IP地址,然後配置Apache HTTP伺服器,令其辨識不同的主機名就可以了。基於域名的伺服器也可以緩解IP地址不足的問題。


比如說,假設你正在為域名www.domain.tld提供服務,而你又想在同一個IP地址上增加一個名叫www.otherdomain.tld的虛擬主機,你只需在httpd.conf中加入以下內容:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>

當然,你可以用一個固定的IP地址來代替NameVirtualHost和<VirtualHost>指令中的"*"號,以達到一些特定的目的。比如說,你可能會希望在一個IP地址上執行一個基於域名的虛擬主機,而在另外一個IP地址上執行一個基於IP的或是另外一套基於域名的虛擬主機。

很多伺服器希望自己能通過不只一個域名被訪問。我們可以把ServerAlias指令放入<VirtualHost>小節中來解決這個問題。比如說在上面的第一個<VirtualHost>配置段中ServerAlias指令中列出的名字就是使用者可以用來訪問同一個web站點的其它名字:

ServerAlias domain.tld *.domain.tld

這樣,所有對域domain.tld的訪問請求都將由虛擬主機www.domain.tld處理。萬用字元標記"*"和"?"可以用於域名的匹配。當然你不能僅僅搞個名字然後把它放到ServerName或ServerAlias裡就算完了。你必須先在你的DNS伺服器上進行配置,將這些名字和您伺服器上的一個IP地址建立對映關係。

最後,你可以把其他一些指令放入<VirtualHost>段中,以更好的配置一個虛擬主機。大部分指令都可以放入這些<VirtualHost>段中以改變相應虛擬主機配置。如果您想了解一個特定的指令是否可以這樣運用,請參見指令的作用域。主伺服器(main server)範圍內的配置指令(在所有<VirtualHost>配置段之外的指令)僅在它們沒有被虛擬主機的配置覆蓋時才起作用。

這樣,當一個請求到達的時候,伺服器會首先檢查它是否使用了一個能和NameVirtualHost相匹配的IP地址。如果能夠匹配,它就會查詢每個與這個IP地址相對應的<VirtualHost>段,並嘗試找出一個與請求的主機名相同的ServerName或ServerAlias配置項。如果找到了,它就會使用這個伺服器。否則,將使用符合這個IP地址的第一個列出的虛擬主機。

綜上所述,第一個列出的虛擬主機充當了預設虛擬主機的角色。當一個IP地址與NameVirtualHost指令中的配置相符的時候,主伺服器中的DocumentRoot將永遠不會被用到。所以,如果你想建立一段特殊的配置用於處理不對應任何一個虛擬主機的請求的話,你只要簡單的把這段配置放到<VirtualHost>段中,並把它放到配置檔案的最前面就可以了。


二,基於埠的虛擬主機
listen 800
listen 8080

<virtualhost 192.168.1.200:800>;
    documentroot /www/v-host1
</virtualhost>;
<virtualhost 192.168.1.200:6666>;
    documentroot /www/v-host2
</virtualhost>;
儲存推出
mkdir -p /www/v-host1
mkdir -p /www/v-host2
echo "test 1">; /www/v-host1/index.html
echo "test 2">; /www/v-host2/index.html
apachectl restart
在瀏覽其中輸入192.168.1.200:800


NameVirtualHost 222.73.*.*:8080
<VirtualHost 222.73.*.*:8080>
  ServerAdmin
[email protected]

  DocumentRoot C:/AppServ/www/abc
  ServerName www.abc.net
  ErrorLog logs/xoops.54sy.com-error_log
  CustomLog logs/xoops.54sy.com-access_log common
</VirtualHost>

<VirtualHost 222.73.*.*:80>
  ServerAdmin [email protected]
  DocumentRoot C:/AppServ/www/abcdef
  ServerName www.abcdef.net
  ErrorLog logs/xoops.54sy.com-error_log
  CustomLog logs/xoops.54sy.com-access_log common
</VirtualHost>

Apache配置虛擬主機出現“錯誤403,你無權檢視該頁”的問題

配置多個域名綁在同一個IP上的虛擬主機時,會出現403錯誤,“禁止訪問, 您無權檢視該網頁”,您可能沒有許可權用您提供的憑據檢視此目錄或網頁。

自己的配置、許可權都沒有問題,查了一下網上資料,原來是apache2的預設安全機制的問題,這樣處理:

在httpd.conf中找到:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    deny from all
</Directory>

改為:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

或:

<Directory />
    Options FollowSymLinks ExecCGI Indexes
    AllowOverride None
    Order deny,allow
    deny from all
    Satisfy all
</Directory>



<Directory />
    Options FollowSymLinks ExecCGI Indexes
    AllowOverride None
    Order allow,deny
    allow from all
    Satisfy all
</Directory>

相關推薦

apache基於域名虛擬主機

轉自http://blog.chinaunix.net/space.php?uid=12247636&do=blog&id=2953447 為一個同事安裝apache+php+mysql環境,安裝完成後,apache啟動後反應非常慢,折騰了好幾天的時間都不

Apache訪問控制Web虛擬主機

處理 erro 網站服務 ocs 目錄 創建用戶 2.x 創建 1.2 一、httpd服務的訪問控制 可對特定的網站目錄添加訪問授權,對客戶機地址限制、用戶授權做限制;兩種控制方式都應用與httpd.conf配置文件中的目錄區域<Directory 目錄位置>

基於域名的本地虛擬主機配置

一、 配置server0 web服務,http://www0.example.com 自行做解析 網頁:自定義,命名為index.html 來自192.168.162.0/24域的客戶端可以訪問web服務; 來自10.30.122.0/24域的客戶端拒絕

Linux安裝Nignx基於域名的多虛擬主機實戰

wid 出錯 url 成功 cti www keepaliv gen res 看這個文章之前,要保證你的Nginx已經安裝成功! 如果沒有,請移步到下面這個文章,看完後再回來看! https://www.cnblogs.com/apollo1616/p/102145

CentOS 7----Apache基於域名虛擬主機配置

err 基於 -- tro var option directory tor hosts 配置/etc/hosts文件,192.168.1.209 對應的域名如下: 192.168.1.209 www.name1.com 編輯每個域名的配置文件: <VirtualHo

centOS6配置Apache基於域名的多個虛擬主機

centOS6下配置Apache的虛擬主機: 1、#vim /etc/httpd/conf/httpd.conf 編輯#NameVirtualHost *:80為NameVirtualHos

apache配置虛擬主機,為什麼總是第一個VirtualHost起效 apache基於域名虛擬主機,只訪問第一個的問題

起初如下配置 <VirtualHost *:80> ...... ........ .......... </VirtualHost> <VirtualHost *:80> ...... ........ .......... <

Ubuntu Linux下apache基於域名虛擬主機配置詳解

 Ubuntu Linux下apache基於域名的虛擬主機配置的詳細步驟:   最近在學習linux,今天在linux下配置了下虛擬主機,下面是步驟: 要配置的網站http://www.hx95.com 虛擬主機檔案 myweb 1、首先在 /etc/apache2/

apachenginx虛擬主機的配置

apache虛擬主機配置: [[[email protected] conf.d]# mkdir /webroot/web1    [email protected] conf.d]# mkdir -p /var/log/httpd/web1/    

Nginx的配置文件簡介及在Nginx中配置基於不同ip的虛擬主機

sendfile set code orm add form charset html-10 main Nginx的配置文件簡介及在Nginx中配置基於不同ip的虛擬主機: #user nobody; worker_processes 1; #error_log

Apache中httpd-vhosts.conf虛擬主機設定,Allow,Deny,Require含義

Deny : 拒絕訪問; 語法 : Deny from 要拒絕的範圍(支援ip和domain或all) 例如 : Deny from 192.168.0.1 (完整ip地址) Deny from 192.168 (部分ip地址) Deny from apache.org (域名

CentOS配置Tomcat監聽80,虛擬主機

Tomcat更改預設埠為80 更改的配置檔案是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" pro

lamp(四)——apache與php結合、虛擬主機配置

11.14/11.15 Apache和PHP結合 11.16/11.17 Apache預設虛擬主機 lamp安裝完成後就是三個軟體的配置和維護。配置主要設計apache和php,作為web服務的主要提供者,apache配置是首先要掌握的。 apache與php結

Tomcat繫結多個域名配置虛擬目錄的方法

server.xml 的修改方式如下: (一)多域名繫結 1.如果你要繫結網站,首先是要把tomcat的預設訪問埠8080,修改成80 原始: <Connector port="8080" maxHttpHeaderSize="8192" maxThreads

apache配置httpd-vhosts實現虛擬主機訪問

環境:WAMP 第一步:開啟httpd.conf檔案 1.去掉  Include conf/extra/httpd-vhosts.conf 前面的註釋符號(#) 2.去掉 LoadModule r

Centos7 tomcat安裝tomcat虛擬主機

Centos7 tomcat安裝和tomcat虛擬主機 tomcat下載網址:wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz jdk下載網址:wget https://d

Apache中多個HTTPS虛擬主機的實現

まずはデフォルトでインストールされているOpenSSLで証明書を作成しておきます。[ 証明書の作成 ]mkdir ~/keyscd ~/keysopenssl genrsa -des3 1024 > server.keyopenssl rsa -in server.key -out server.key

Apache中多個HTTPS虛擬主機的實現 (多個伺服器證書實現的基礎)

修改/etc/httpd/conf.d/ssl.conf 新增新的虛擬主機 <VirtualHost192.168.236.133:8080> DocumentRoot"/var/www/

java替換url的域名

public static String replaceDomainAndPort(String domain,String port,String url){String url_bak = "";if(url.indexOf("//") != -1 ){String[]

dva-cli域名號配置

可環境變數臨時配置一些引數,包括: PORT, 埠號,預設 8000 HOST, 預設 localhost HTTPS,是否開啟 https,預設關閉 BROWSER,設為 none 時不自動開啟瀏覽器 CLEAR_CONSOLE,設為 none 時清屏 #