Home >Backend Development >PHP Tutorial >Detailed explanation of apache2.2 virtual host configuration, detailed explanation of apache2.2_PHP tutorial

Detailed explanation of apache2.2 virtual host configuration, detailed explanation of apache2.2_PHP tutorial

WBOY
WBOYOriginal
2016-07-12 09:04:34755browse

Detailed explanation of apache2.2 virtual host configuration, detailed explanation of apache2.2

1. Modify httpd.conf

Open the appserv installation directory, find the httpd.conf file, and remove the # sign in front of the following two lines of text.

#LoadModule vhost_alias_module modules/mod_vhost_alias.so  

Removing # means enabling the virtual host function of apache.

#Include conf/extra/httpd-vhosts.conf

Removing the # in this line means importing the virtual host configuration from the file conf/extra/httpd-vhosts.conf

2. Modify httpd-vhosts.conf

Open the file and see content similar to the following. The configuration of the virtual host is also configured according to the following content. This content is explained below

NameVirtualHost *:80  
  
<VirtualHost *:80>  
    ServerAdmin webmaster@dummy-host.www.phpStudy.net  
    DocumentRoot "C:/Program Files/Apache2/docs/dummy-host.www.phpStudy.net"  
    ServerName dummy-host.www.phpStudy.net  
    ServerAlias www.dummy-host.www.phpStudy.net  
    ErrorLog "logs/dummy-host.www.phpStudy.net-error.log"  
    CustomLog "logs/dummy-host.www.phpStudy.net-access.log" common  
</VirtualHost>  

NameVirtualHost *:80

Note 1: NameVirtualHost specifies the IP address or domain name used by the virtual host, but it is best to use the IP address. NameVirtualHost is a necessary directive when using domain name-based virtual hosts. Multiple NameVirtualHost can be defined. Note 2: All requests that match the NameVirtualHost or 017421ec4e1d87ae7f66fefe80084b1d tag definition will be processed as a virtual host, and the main server will ignore it. For requests where NameVirtualHost is defined but the 017421ec4e1d87ae7f66fefe80084b1d tag is not defined, the server will not be able to find the corresponding virtual host and will not be able to process it. Therefore, each parameter defined by NameVirtualHost must match at least one 017421ec4e1d87ae7f66fefe80084b1d. Note 3: If you set NameVirtualHost or 017421ec4e1d87ae7f66fefe80084b1d to *:80, all requests for port 80 will be processed by the virtual host, and the requests will be directed to a certain virtual host based on the domain name. If there is a request from port 80 and the requested domain name is not configured as a virtual host, it will point to the first virtual host. This way the main server will not be able to receive any requests from port 80. A virtual host must also be configured for the main server for this purpose.

ServerAdmin Administrator Email

DocumentRoot website directory (Note: If the path in the website directory has spaces, please add double quotes at both ends of the path)

ServerName Domain name to be bound (required)

ServerAlias ​​The alias of the virtual host to be bound. (Optional, if there are multiple domain names, separate them with spaces. If not, remove the line)

Supports two wildcards: * and ?, such as *.abc.com, which means that any second-level domain name of abc.com can be accessed.

CustomLog user log file (optional, remove this line if not needed)

ErrorLog error log (optional, if not needed, remove this line)

Virtual hosting based on IP address

<VirtualHost 172.20.30.40>  
  DocumentRoot /www/example1  
  ServerName www.example.com  
</VirtualHost>  

<VirtualHost 172.20.30.50 192.168.0.10:80>  
  DocumentRoot /www/example2  
  ServerName www.example.org  
</VirtualHost>  

Each virtual host can define multiple IPs, separated by spaces

Mixed use of various virtual hosts

Listen 80  
Listen 81  
  
NameVirtualHost 172.20.30.40  
  
<VirtualHost 172.20.30.40>  
    DocumentRoot /www/example1  
    ServerName www.example.com  
</VirtualHost>  
  
<VirtualHost 172.20.30.40>  
    DocumentRoot /www/example2  
    ServerName www.example.org  
</VirtualHost>  
  
NameVirtualHost 172.20.30.40:81  
  
<VirtualHost 172.20.30.40:81>  
    DocumentRoot /www/example3  
    ServerName www.example3.net  
</VirtualHost>  
  
# IP-based  
<VirtualHost 172.20.30.50>  
    DocumentRoot /www/example4  
    ServerName www.example4.edu  
</VirtualHost>  
  
<VirtualHost 172.20.30.60:81 172.20.30.40:81>  
    DocumentRoot /www/example5  
    ServerName www.example5.gov  
</VirtualHost>  

Problems when using mixed virtual hosts

1. Mixed use of virtual hosts can be understood as follows: all virtual hosts defined by a line of NameVirtualHost directive are a group; this group is at the same level as an IP-based virtual host. That is, the entire group defined by a row of NameVirtualHost is regarded as an IP-based virtual host. 2. The port specified by the virtual host must be defined by Listen. If the virtual host does not specify a port, it is assumed to be port 80. If NameVirtualHost * is defined this way, refers to all defined ports for all addresses. 3. More specific address definitions take precedence. For example, the NameVirtualHost directive defines *:80, and an IP-based virtual host is defined as 192.168.0.1:80. If there is a request for 192.168.0.1:80 at this time, the request will be directed to 192.168.0.1:80 first. Defined virtual host. So to avoid confusion, do not define address ranges that overlap or include each other. 4. A virtual host can be both domain name-based and IP-based. Like the last virtual host in the previous example. In this way, requests that meet both definitions will be directed to the same virtual host. Sometimes this can be done when distinguishing between internal and external network access to a virtual host, because requests from the internal network may be different from requests from the external network, but they need to point to the same virtual host.

Use "_default_" virtual host

This virtual host can be understood as an IP-based virtual host

<VirtualHost _default_:*>  
    DocumentRoot /www/default  
</VirtualHost>  

This virtual host will take over requests that do not match the IP and port of other virtual hosts. However, in this case, the main server will not process any requests. Therefore it is necessary to configure the main server as a virtual host.

The local machine agent is a virtual host running on other machines

<VirtualHost 158.29.33.248>  
    ProxyPreserveHost On  
    ProxyPass /foo/no !  
    ProxyPass /foo http://192.168.111.2  
    ProxyPassReverse /foo http://192.168.111.2  
    ServerName hostname.example.com  
</VirtualHost>

一、首先这是一个基于IP的虚拟主机,它接收并处理对IP地址158.29.33.248的请求。 二、ProxyPass /foo http://192.168.111.2 将把对http://158.29.33.248/foo的请求转换为一个代理请求,该请求指向http://192.168.111.2。 三、ProxyPass /foo/no ! 不代理针对/foo/no的请求。这个必须放在正常代理指令之前。 四、ProxyPreserveHost On 意思是传送原始请求的Host信息给被代理的机器。 五、ProxyPassReverse /foo http://192.168.111.2 可以保证请求URL在其它机器上被重定向后,本机处理时也可以保持一致。具体看手册关于反向代理的部分。 六、基于域名的虚拟主机也是同样的道理。不管是什么类型的虚拟主机,它只是处理归它处理的请求而已。

 

配置实例

需求1:

这是一个基于IP的虚拟主机使用实例

一个项目数据应用,为了防止由于域名解析问题导致不能正常访问,因此采用IP的方式访问接口。比如:http://61.122.3.6:8080/ 这样的方式。虚拟主机的配置如下:

1、在httpd.conf中Listen 80下面增加一行,内容为:Listen 8080,即监听8080端口

2、配置虚拟主机配置

 

#NameVirtualHost 61.122.3.6:8080 这一行可以不需要。经测试,基于IP地址的虚拟主机可不用设置NameVirtualHost项。  
<VirtualHost 61.122.3.6:8080>  
    ServerAdmin webmaster@dummy-host.www.phpStudy.net  
    DocumentRoot "d:/web/openj"  
</VirtualHost>  

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1072328.htmlTechArticleapache2.2 虚拟主机配置详解,apache2.2详解 一、修改httpd.conf 打开appserv的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号。 #...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn