Apache
Apache 2:配置虚拟主机
## 1. 基于名称的虚拟主机 - 要配置基于名称的虚拟主机,需要设置要在其上接收所有所需网站的Apache请求的IP地址。可以通过apache配置中的NameVirutalHost指令(即/etc/httpd/conf/httpd.conf文件)执行此操作。 ```markdown NameVirtualHost *:80 <VirtualHost 192.168.0.108:80> ServerAdmin webmaster@yiibai.com DocumentRoot /var/www/html/example1_com_dir ServerName www.example1.com ServerAlias example.com www.example ErrorLog /usr/www/example/httpd/logs/error_log TransferLog /usr/www/example/httpd/logs/accesslog CustomLog /usr/www/example/httpd/logs/accesslog combined </VirtualHost> <VirtualHost 192.168.0.108:80> ServerAdmin admin@yiibai.com DocumentRoot /var/www/html/example2_com_dir ServerName www.example2.com </VirtualHost> ``` ## 2. 基于IP的虚拟主机 - 要设置基于IP的虚拟主机,需要在服务器上配置多个IP地址。因此,vhost apache的数量取决于服务器上配置的IP地址数量。如果您的服务器有10个IP地址,则可以创建10个基于IP的虚拟主机 ```markdown Listen 192.168.0.100:80 <VirtualHost 192.168.10.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1_com_dir ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.10.109:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example1_com_dir ServerName www.example2.com </VirtualHost> ``` ## 3. 虚拟主机配置示例 ##### 1. 在单个IP地址上运行多个基于域名的网站 ```markdown Listen 80 <VirtualHost *:80> DocumentRoot "/var/www/example1" ServerName www.example.com # Other directives here </VirtualHost> <VirtualHost *:80> DocumentRoot "/var/www/example2" ServerName www.example.org # Other directives here </VirtualHost> ``` ##### 2. 多个IP地址上基于名称的主机 ```markdown Listen 80 # This is the "main" server running on 172.20.30.40 ServerName server.example.com DocumentRoot "/www/mainserver" <VirtualHost 172.20.30.50> DocumentRoot "/www/example1" ServerName www.example.com # Other directives here ... </VirtualHost> <VirtualHost 172.20.30.50> DocumentRoot "/www/example2" ServerName www.example.org # Other directives here ... </VirtualHost> ``` ##### 3. 在不同的IP地址(例如内部和外部地址)上提供相同的内容 - 服务器计算机有两个IP地址(192.168.1.1和172.20.30.40)。机器位于内部(Intranet)网络和外部(Internet)网络之间。在网络外部,名称server.example.com解析为外部地址(172.20.30.40),但在网络内部,同一名称解析为内部地址(192.168.1.1)。 只需一个<VirtualHost>部分,就可以使服务器响应具有相同内容的内部和外部请求。 ```markdown <VirtualHost 192.168.1.1 172.20.30.40> DocumentRoot "/www/server1" ServerName server.example.com ServerAlias server </VirtualHost> ``` ##### 4. 在不同端口上运行不同的站点 ```markdown Listen 80 Listen 8080 <VirtualHost 172.20.30.40:80> ServerName www.example.com DocumentRoot "/www/domain-80" </VirtualHost> <VirtualHost 172.20.30.40:8080> ServerName www.example.com DocumentRoot "/www/domain-8080" </VirtualHost> ``` ##### 5. 基于混合端口和基于IP的虚拟主机 ```markdown Listen 172.20.30.40:80 Listen 172.20.30.40:8080 Listen 172.20.30.50:80 Listen 172.20.30.50:8080 <VirtualHost 172.20.30.40:80> DocumentRoot "/www/example1-80" ServerName www.example.com </VirtualHost> <VirtualHost 172.20.30.40:8080> DocumentRoot "/www/example1-8080" ServerName www.example.com </VirtualHost> <VirtualHost 172.20.30.50:80> DocumentRoot "/www/example2-80" ServerName www.example.org </VirtualHost> <VirtualHost 172.20.30.50:8080> DocumentRoot "/www/example2-8080" ServerName www.example.org </VirtualHost> ``` ##### 6. 混合基于名称和基于IP的虚拟主机 ```markdown Listen 80 <VirtualHost 172.20.30.40> DocumentRoot "/www/example1" ServerName www.example.com </VirtualHost> <VirtualHost 172.20.30.50> DocumentRoot "/www/example4" ServerName www.example.edu </VirtualHost> <VirtualHost 172.20.30.60> DocumentRoot "/www/example5" ServerName www.example.gov </VirtualHost> ``` ##### 7. Virtual_host和mod_proxy一起使用 以下示例允许前端计算机将虚拟主机代理到另一台计算机上运行的服务器。在该示例中,在192.168.111.2的计算机上配置了同名的虚拟主机。如果我们将多个主机名代理到单个机器,则使用ProxyPreserveHost On指令以便传递所需的主机名。 ```markdown <VirtualHost *:*> ProxyPreserveHost On ProxyPass "/" "http://192.168.111.2/" ProxyPassReverse "/" "http://192.168.111.2/" ServerName hostname.example.com </VirtualHost> ``` ##### 8.使用ServerPath指令 ```markdown <VirtualHost 172.20.30.40> # primary vhost DocumentRoot "/www/subdomain" RewriteEngine On RewriteRule "." "/www/subdomain/index.html" # ... </VirtualHost> <VirtualHost 172.20.30.40> DocumentRoot "/www/subdomain/sub1" ServerName www.sub1.domain.tld ServerPath "/sub1/" RewriteEngine On RewriteRule "^(/sub1/.*)" "/www/subdomain$1" # ... </VirtualHost> <VirtualHost 172.20.30.40> DocumentRoot "/www/subdomain/sub2" ServerName www.sub2.domain.tld ServerPath "/sub2/" RewriteEngine On RewriteRule "^(/sub2/.*)" "/www/subdomain$1" # ... </VirtualHost> ```
顶部
收展
底部
[TOC]
目录
Apache 1:简介安装
Apache 2:配置虚拟主机
Apache 3:安全
Apache 4:性能测试工具ab的应用
Apache 5:并发调优(MPM)
Apache 6 : 性能调优
Apache 7 : 参数调优
相关推荐
Nginx