


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
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
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>

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

PHP remains important in the modernization process because it supports a large number of websites and applications and adapts to development needs through frameworks. 1.PHP7 improves performance and introduces new features. 2. Modern frameworks such as Laravel, Symfony and CodeIgniter simplify development and improve code quality. 3. Performance optimization and best practices further improve application efficiency.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP type prompts to improve code quality and readability. 1) Scalar type tips: Since PHP7.0, basic data types are allowed to be specified in function parameters, such as int, float, etc. 2) Return type prompt: Ensure the consistency of the function return value type. 3) Union type prompt: Since PHP8.0, multiple types are allowed to be specified in function parameters or return values. 4) Nullable type prompt: Allows to include null values and handle functions that may return null values.

In PHP, use the clone keyword to create a copy of the object and customize the cloning behavior through the \_\_clone magic method. 1. Use the clone keyword to make a shallow copy, cloning the object's properties but not the object's properties. 2. The \_\_clone method can deeply copy nested objects to avoid shallow copying problems. 3. Pay attention to avoid circular references and performance problems in cloning, and optimize cloning operations to improve efficiency.

PHP is suitable for web development and content management systems, and Python is suitable for data science, machine learning and automation scripts. 1.PHP performs well in building fast and scalable websites and applications and is commonly used in CMS such as WordPress. 2. Python has performed outstandingly in the fields of data science and machine learning, with rich libraries such as NumPy and TensorFlow.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Notepad++7.3.1
Easy-to-use and free code editor

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 Linux new version
SublimeText3 Linux latest version