mac中的Apache只能用localhost访问80端口,但无法用127.0.0.1和局域网IP访问(折磨了我好几个月的问题,终于得以解决,超级激动)

文末给出了/etc/hosts/etc/apache2/httpd.conf/etc/apache2/extra/httpd-vhosts.conf文件内容细节

mac自带Apache真好,但我在今年3月份的时候,突然发现了一个问题,我的PHP项目可以通过通过localhost访问,但是无法通过127.0.0.1和192.168.1.*来访问我的地址。我猜测可能是因为我之前配置了虚拟主机导致的。

我在百度上搜索了很多解答,照着别人说的修改了/etc/appache2/httpd.conf文件中的<Directory />,如下所示。

<Directory />
#   onlineoffline tag - don't remove  
    Order Deny,Allow  
#   Deny from all  
    Allow from 127.0.0.1  
    Allow from 192.168.1.* 
    Allow from 10.107.30.*
</Directory>

但是修改了却没有效果。

今天,我又去找这个问题,终于得到了解决。原来真的是我之前配置虚拟主机导致的问题,httpd.confhttpd-vhosts.conf中的访问地址要保持一致。这是我之前配置主机时修改的/etc/apache2/extra/httpd-vhosts.conf文件,可以看到我这里面只能通过localhost和我配的域名访问,没有配置通过IP地址访问。

# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/mac/PhpstormProjects"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/mac/PhpstormProjects/qiaokeba"
    ServerName www.qiaokeba.com
</VirtualHost>

<VirtualHost *:80>
	DocumentRoot "/Users/mac/PhpstormProjects/JudgeOnline"
	ServerName www.aoj.com
</VirtualHost>

于是我加上了下面代码到上面文件中,然后重启Apache就可以在浏览器上通过127.0.0.1就可以了

<VirtualHost *:80>
    DocumentRoot "/Users/mac/PhpstormProjects"
    ServerName 127.0.0.1
</VirtualHost>

重启Apache的命令是:sudo apachectl restart

然后我把192.168和10.107的局域网地址也加进来了,最终文件/etc/apache2/extra/httpd-vhosts.conf内容如下:

  • /etc/apache2/extra/httpd-vhosts.conf
# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/mac/PhpstormProjects"
    ServerName 127.0.0.1
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/mac/PhpstormProjects"
    ServerName www.jal.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/mac/PhpstormProjects"
    ServerName 192.168.1.106
</VirtualHost>


<VirtualHost *:80>
    DocumentRoot "/Users/mac/PhpstormProjects"
    ServerName 10.107.30.31
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/mac/PhpstormProjects"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值