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.
[plain] view plaincopy
- #LoadModule vhost_alias_module modules/mod_vhost_alias.so
[plain] view plaincopy
- #Include conf/extra/httpd-vhosts.conf
II , 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. The content is explained below
[plain] view plaincopy
- NameVirtualHost *:80
- ServerAdmin web master@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>
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
Note 3: If you set 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 to be bound The alias of a specified virtual host. (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 is Accessible.
CustomLog user log file (optional, remove this line if not needed)
ErrorLog error log (optional, remove this line if not needed)
Virtual host based on IP address
[plain] view plaincopy
- DocumentRoot /www/example1
- ServerName www.example.com
[plain] view plaincopy
- DocumentRoot /www/example2
- ServerName www. example.org
Mixed use of various virtual hosts
[plain] view plaincopy
- Listen 80
- Listen 81
- NameVirtualHost 172.20.30.40
- DocumentRoot /www /example1
- ServerName www.example.com
- DocumentRoot /www/example2
- ServerName www.example.org
- NameVirtualHost 172.20.30.40:81
- DocumentRoot /www/example3
- ServerName www.example3.net
- # IP-based
- DocumentRoot /www/example4
- ServerName www.example4.edu
- DocumentRoot /www/example5
- ServerName www.example5.gov
Problems when virtual hosts are mixed
1. Mixed use of virtual hosts can be understood like this: one line NameVirtualHost All virtual hosts defined by the directive are grouped together; the group is the same 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 are preferred. 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
[plain] view plaincopy
- DocumentRoot /www/default
Local machine proxy virtual host running on other machines
[plain] view plaincopy
- ProxyPreserveHost On
- ProxyPass /foo/no !
- ProxyPass /foo http://192.168.111.2
- ProxyPassReverse /foo http://192.168.111.2
- ServerName hostname.example.com
2. ProxyPass /foo http://192.168.111.2 will convert the request for http://158.29.33.248/foo into a proxy request, which points to http://192.168.111.2.
3. ProxyPass /foo/no! Do not proxy requests for /foo/no. This must be placed before the normal proxy directive.
4. ProxyPreserveHost On means transmitting the Host information of the original request to the proxy machine.
5. ProxyPassReverse /foo http://192.168.111.2 can ensure that after the request URL is redirected on other machines, it can be processed consistently on this machine. See the manual section about reverse proxy for details.
6. The same is true for domain name-based virtual hosts. No matter what type of virtual host it is, it only handles the requests it handles.
Configuration example
Requirement 1:
This is an IP-based virtual host usage example
A project data application. In order to prevent normal access due to domain name resolution problems, IP is used to access the interface. For example: http://61.122.3.6:8080/ This way. The configuration of the virtual host is as follows:
1. Add a line under Listen 80 in httpd.conf, the content is: Listen 8080, that is, listen to the 8080 port
2. Configure the virtual host configuration
[plain] view plaincopy
- #NameVirtualHost 61.122.3.6:8080 This line is not required. After testing, the virtual host based on IP address does not need to set the NameVirtualHost item.
- ServerAdmin webmaster@dummy-host.www.phpStudy.net
- DocumentRoot "d :/web/openj"
- VirtualHost>
The above introduces the apache2.2 virtual host configuration, including aspects of the content. I hope it will be helpful to friends who are interested in PHP tutorials.

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

PHPisusedforsendingemailsduetoitsbuilt-inmail()functionandsupportivelibrarieslikePHPMailerandSwiftMailer.1)Usethemail()functionforbasicemails,butithaslimitations.2)EmployPHPMailerforadvancedfeatureslikeHTMLemailsandattachments.3)Improvedeliverability

PHP performance bottlenecks can be solved through the following steps: 1) Use Xdebug or Blackfire for performance analysis to find out the problem; 2) Optimize database queries and use caches, such as APCu; 3) Use efficient functions such as array_filter to optimize array operations; 4) Configure OPcache for bytecode cache; 5) Optimize the front-end, such as reducing HTTP requests and optimizing pictures; 6) Continuously monitor and optimize performance. Through these methods, the performance of PHP applications can be significantly improved.

DependencyInjection(DI)inPHPisadesignpatternthatmanagesandreducesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itallowspassingdependencieslikedatabaseconnectionstoclassesasparameters,facilitatingeasiertestingandscalability.

CachingimprovesPHPperformancebystoringresultsofcomputationsorqueriesforquickretrieval,reducingserverloadandenhancingresponsetimes.Effectivestrategiesinclude:1)Opcodecaching,whichstorescompiledPHPscriptsinmemorytoskipcompilation;2)DatacachingusingMemc


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

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 Chinese version
Chinese version, very easy to use

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Mac version
God-level code editing software (SublimeText3)

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool
