IT Share you

Apache VirtualHost 및 localhost

shareyou 2020. 12. 2. 22:13
반응형

Apache VirtualHost 및 localhost


저는 Mac OS X에서 XAMPP로 작업하고 있습니다. 클라이언트를위한 심포니 웹 사이트를 제대로 실행하려고합니다. 저는 심포니를 잘 모릅니다. 설치하고 실행하고 싶습니다.

이 방법으로 등 / 호스트를 변경했습니다.

127.0.0.1 www.mysite.local       

그리고 httpd.conf는 다음과 같습니다.

<VirtualHost *:80>
  ServerName www.mysite.local
  DocumentRoot /Applications/MAMP/htdocs/mysite/web
  DirectoryIndex index.php
  <Directory /Applications/MAMP/htdocs/mysite/web>
    AllowOverride All
    Allow from All
  </Directory>
  Alias /sf /Applications/MAMP/htdocs/mysite/lib/vendor/symfony/data/web/sf
  <Directory "/Applications/MAMP/htdocs/mysite/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

이제 사이트가 작동하고 있지만 (예!) localhostwww.mysite.local 로 렌더링 되기 때문에 다른 로컬 사이트에 더 이상 액세스 할 수 없습니다 . 내가 틀렸어?

감사합니다!


보시면 정상입니다. 첫 번째 가상 호스트 항목이므로 로컬 호스트를 표시합니다.

예를 들어 해당 페이지를 표시하고 싶지 않다고 가정 해 보겠습니다. 보여주고 싶은 것은 아파치 작동 페이지이므로 mysite.local 앞에 가상 호스트 항목을 로컬 호스트로 만들고 작동 페이지를 가리킬 것입니다.

그러나 이것은 정상입니다. 나는 전에이 문제가 있었으므로 걱정하지 마십시오!


이것은 나를 위해 일했습니다!

다음과 같은 프로젝트를 실행하려면 http://localhost/projectName

<VirtualHost localhost:80>
   ServerAdmin localhost
    DocumentRoot path/to/htdocs/
    ServerName localhost
</VirtualHost>

http://somewebsite.com로컬 과 같은 프로젝트를 실행하려면

<VirtualHost somewebsite.com:80>
     ServerAdmin webmaster@example.com
     DocumentRoot /path/to/htdocs/somewebsiteFolder
     ServerName www.somewebsite.com
     ServerAlias somewebsite.com
</VirtualHost>

다른 웹 사이트와 동일

<VirtualHost anothersite.local:80>
     ServerAdmin webmaster@example.com
     DocumentRoot /path/to/htdocs/anotherSiteFolder
     ServerName www.anothersite.local
     ServerAlias anothersite.com
</VirtualHost>

localhost항상로 리디렉션됩니다 127.0.0.1. 다른 VirtualHost의 이름을 다른 로컬 루프백 주소로 지정하여이를 속일 수 있습니다 127.0.0.2. hosts이를 구현 하려면 해당 파일 도 변경해야합니다 .

예를 들어, 내 httpd-vhosts.conf모습은 다음과 같습니다.

<VirtualHost 127.0.0.2:80>
    DocumentRoot "D:/6. App Data/XAMPP Shared/htdocs/intranet"
    ServerName intranet.dev
    ServerAlias www.intranet.dev
    ErrorLog "logs/intranet.dev-error.log"
    CustomLog "logs/intranet.dec-access.log" combined

    <Directory "D:/6. App Data/XAMPP Shared/htdocs/intranet">
        Options Indexes FollowSymLinks ExecCGI Includes
        Order allow,deny
        Allow from all
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

( <VirtualHost>섹션에서을 입력했습니다 127.0.0.2:80. 이는 VirtualHost의이 블록이 HTTP의 기본 포트 인 IP 주소 127.0.0.2port에 대한 요청에만 영향을 미친다는 것을 의미합니다 80.

이름을 intranet.dev올바르게 라우팅하기 위해 hosts입력 줄은 다음과 같습니다.

127.0.0.2 intranet.dev

이렇게하면에 대해 localhost불필요한 VirtualHost 블록을 만들 수 없습니다.


이것을 사용할 수 있습니다.

<VirtualHost *:80>
    DocumentRoot "somepath\Apache2.2\htdocs"
    ServerName localhost 
</VirtualHost>
<VirtualHost *:80>

첫 번째 가상 호스트로 (다른 가상 호스트 앞에 배치)


virtualHost로 작업하는 동안 localhost에 액세스하는 것과 동일한 문제가 발생했습니다. 아래와 같이 virtualHost 수신 코드에 이름을 추가하여 해결했습니다.

호스트 파일에서 아래 코드를 추가했습니다 ( C : \ Windows \ System32 \ drivers \ etc \ hosts )-

127.0.0.1       main_live

그리고 내 httpd.conf에서 아래 코드를 추가했습니다.

<VirtualHost main_live:80>
    DocumentRoot H:/wamp/www/raj/main_live/
    ServerName main_live
</VirtualHost>

그게 다야. 작동하며, localhost , phpmyadminmain_live (내 가상 프로젝트)를 동시에 사용할 수 있습니다.


Additional description for John Smith answer from official documentation. To understand why it is.

Main host goes away

If you are adding virtual hosts to an existing web server, you must also create a block for the existing host. The ServerName and DocumentRoot included in this virtual host should be the same as the global ServerName and DocumentRoot. List this virtual host first in the configuration file so that it will act as the default host.

For example to work properly with XAMPP, to prevent VirtualHost override main host, add follow lines into httpd-vhosts.conf

# Main host
<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/xampp/htdocs"
</VirtualHost>

# Additional host
<VirtualHost *:80>
    # over directives there
</VirtualHost>

For someone doing everything descripted here and still cant access:
Xampp with apache 2.4:

on httpd-vhost.conf

<VirtualHost *>
    DocumentRoot "D:/xampp/htdocs/dir"
    ServerName something.dev
   <Directory "D:/xampp/htdocs/dir">
    Require all granted #apache v 2.4.4 uses just this
   </Directory>
</VirtualHost>


No need for port, or ip here, apache configure it on its own files. No need for NameVirtualHost *:80, its deprecated, you can use it, but make no difference.

Then to edit hosts, you MUST RUN NOTEPAD AS ADMINISTRATOR (DESCRIBED BELLOW), if you where editing the file without doing this, you are editing a pseudo file, not the original (yes, it saves and shit, but its not the real file)
In windows:

Find notepad icon, right click, run as administrator, open file, go to c:/windows/system32/driver/etc/hosts, check "see all files", open hosts.

If you where editing it before, probably you will see its not the file you were previously editing when not running as administrator.

Then to check if Apache is reading your httpd-vhost.conf , go to xampFolder/apache/bin, shift + right click, open terminal command here, open xampp (as you usually do), start apache, then on the command line, type httpd -S , you will see a list of the virtual hosts, just check if your something.dev is there.


Just change <VirtualHost *:80> to <VirtualHost 127.0.0.1:80>.

Then default DocumentRoot will serve for all domains or IPs that point to your server and specified VirtualHost will work.


According to this documentation: Name-based Virtual Host Support

You may be missing the following directive:

NameVirtualHost *:80

it may be because your web folder (as mentioned "/Applications/MAMP/htdocs/mysite/web") is empty.

My suggestion is first to make your project and then work on making virtual host. I went with similar situation. I was using an empty folder in the DocumentRoot in httpd-vhosts.confiz and I cant access my shahg101.com site


I am running Ubuntu 16.04, this is what worked for me:

  1. Open up a terminal and cd to /etc/apache2/sites-available. There you will find a file called 000-default.conf.
  2. Copy that file: cp 000-default.conf example.local.conf
  3. Open that new file (I use Nano; use what you are comfortable with).
  4. You will see a lot of commented lines, which you can delete.
  5. Change <VirtualHost *:80> to <VirtualHost example.local:80>
  6. Change the document root to reflect the location of your files.
  7. Add the following line: ServerName example.local And if you need to, add this line: ServerAlias www.example.local
  8. Save the file and restart Apache: service Apache2 restart

Open a browser and navigate to example.local. You should see your website.

참고URL : https://stackoverflow.com/questions/10981174/apache-virtualhost-and-localhost

반응형