VirtualHost设置始终不起作用

时间:2014-02-21 13:48:18

标签: apache mamp virtualhost hosts

我正在尝试为mampstack设置一个虚拟主机(不是MAMP)。这就是我到目前为止所做的:

在我的httpd.conf文件中,我已经检查了

Listen 8080

这是正确的(我正在听8080端口,而不是80) 然后我在我的Include conf/extra/httpd-vhosts.conf文件中取消注释:httpd.conf
在我的hosts文件中,我添加了以下内容:127.0.0.1 mext-pst.local

httpd-vhosts.conf我添加了:

NameVirtualHost *:8080
<VirtualHost *:8080> 
    DocumentRoot "/Applications/mampstack-5.4.20-0/apache2/htdocs"
    ServerName                127.0.0.1
    ServerAlias               localhost
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN localhost
</VirtualHost>

<VirtualHost *:8080> 
    DocumentRoot "/Applications/mampstack-5.4.20-0/apache2/htdocs/mext-pst-dashboard/web"
    ServerName mext-pst.local
    ServerAlias mext-pst.local
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN mext-pst.local
    RewriteEngine on
    RewriteCond %{SERVER_PORT} ^80$
    RewriteRule ^ http://%{HTTP_HOST}:8080%{REQUEST_URI} [P]
</VirtualHost>

现在当我转到http://mext-pst.local/时,我的浏览器出现错误,导致他无法与该页面连接...。
当我转到http://mext-pst.local:8080/时,我收到以下错误:

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /index.php.

Reason: DNS lookup failure for: mext-pst.local:8080

当我去http://mext-pst.local:8080/index.php时,它有效......

3 个答案:

答案 0 :(得分:2)

将8080更改为默认值80。但如果您希望您的网站在8080上运行,那么您必须使用它。另一个解决方案可能是重写url,即当你的服务器获取url时,它会用端口号(8080)重写它。

首先将Listen 8080改为Listen 80,因为您希望只有http才能访问您的应用程序。 在你的http-vhost.conf文件中放入以下行(当然在删除以前的更改后)。在以下配置中,yourDefaultHttpFolder表示默认的http文件夹。你可能已经改变了它。因此,根据您的系统进行更正。

<VirtualHost *:80> 
   DocumentRoot "/Applications/mampstack-5.4.20-0/apache2/htdocs/yourDefaultHttpFolder"
   ServerName                127.0.0.1
   ServerAlias               localhost
   SetEnv APPLICATION_ENV    development
   SetEnv APPLICATION_DOMAIN localhost

   <Directory /Applications/mampstack-5.4.20-0/apache2/htdocs/yourDefaultHttpFolder>
      RewriteEngine on
      RewriteCond %{SERVER_PORT} ^80$
      RewriteRule ^ http://%{HTTP_HOST}:8080%{REQUEST_URI} [P]
   </Directory>

</VirtualHost>

<VirtualHost *:8080> 
    DocumentRoot "/Applications/mampstack-5.4.20-0/apache2/htdocs/mext-pst-dashboard/web"
    ServerName mext-pst.local
    ServerAlias mext-pst.local
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN mext-pst.local       
 </VirtualHost>

此配置在我的服务器上运行,当我尝试使用80访问时,它会重写我的8080端口的URL,我看到该文件夹​​的内容,而不是默认索引页。

答案 1 :(得分:2)

您必须将端口更改为*:80,如果您要使用其他名称,则服务器名称确保在httpd.conf中使用NameVirtualHost *:80。

答案 2 :(得分:0)

由于您没有侦听端口80,因此在没有端口的情况下转到URL时出错似乎是正确的结果,对吧?

当您前往8080端口时,您将获得Proxy Error。您确定端口8080上没有运行其他软件,或者您的浏览器没有输入代理? Apache不会给Proxy Error。我怀疑这个错误来自其他地方。

关于您的配置,我不确定您要尝试的是什么,但是,如果您在转到localhost:8080时尝试获取一些文档,并且在您去的时候提供另一组文档至少mext-pst.local:8080NameVirtualHost *:8080,{{1}}是正确的,需要在那里,删除重定向行,因为你不需要它们(除非我的假设是错误的)。