Apache 本地虚拟主机已列出但不起作用

Posted

技术标签:

【中文标题】Apache 本地虚拟主机已列出但不起作用【英文标题】:Apache local virtual host is listed but doesn't work 【发布时间】:2019-01-19 04:45:41 【问题描述】:

我需要帮助将我的网站配置为在本地服务器中作为 Apache 中的虚拟目录访问。 我正在尝试使用端口 8050,当我打开 localhost:8050 时,它显示:

无法访问此网站 localhost 拒绝连接。 ERR_CONNECTION_REFUSED

当我尝试在浏览器中访问我的 localhost:80 时,它会显示默认的空白页面,并显示消息“It Works” 如果我在配置中将我的虚拟主机更改为 *.80,它会一直显示默认消息“It Works”,而不是我的页面。

apachectl -t 返回语法 OK 命令:apachectl -t -D DUMP_VHOSTS 返回:

虚拟主机配置: *:8050 personal.com (/private/etc/apache2/extra/httpd-vhosts.conf:24)

我的 httpd.conf 文件中的 Servername 是 localhost,它还包含: 听 8050 和 收听 localhost:8050

这是我在 etc/apache2/extra/httpd-vhosts.conf 中的 httpd-vhosts:

<VirtualHost *:8050>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Users/renatobento/Documents/Projetos/Personal"
    ServerName personal.com
    ErrorLog "/private/var/log/apache2/personal.com-error_log"
    CustomLog "/private/var/log/apache2/personal.com-access_log" common
<Directory "/Users/renatobento/Documents/Projetos/Personal">
    Order allow,deny
    Allow from all
    Require all granted
</Directory>
</VirtualHost>

路径“/Users/renatobento/Documents/Projetos/Personal”似乎是正确的,并且包含一个带有一些内容的简单 index.html,它在具有文件协议的浏览器中工作:“file:///Users/renatobento/文档/Projetos/personal/index.html"

已经执行 apachectl stopapachectl startapachectl restart千次

在停止命令之后,localhost:80 仍然显示消息“It Works”

我使用的是 MAC OSX 10.3 high sierra, apache 2.4

服务器版本:Apache/2.4.33 (Unix) 服务器构建时间:2018 年 4 月 3 日 23:45:11 服务器模块幻数:20120211:76 服务器加载:APR 1.5.2,APR-UTIL 1.5.4 编译使用:APR 1.5.2,APR-UTIL 1.5.4 架构:64 位服务器 MPM:prefork 线程:否 分叉:是(可变进程计数)服务器编译时使用.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6(启用 IPv4 映射地址)-D APR_USE_FLOCK_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/usr" -D SUEXEC_BIN="/usr/bin/suexec" -D DEFAULT_PIDLOG="/private/var/run/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types" -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

编辑: 尝试使用不同的端口:9050 但仍然无法正常工作

【问题讨论】:

【参考方案1】:

检查 DocumentRoot 是否有权限

/Users/renatobento/Documents/Projetos/Personal

设置为每个人都可以访问

您的整体配置似乎不错。


检查您的 /etc/hosts 文件,是否包含类似

127.0.0.1    localhost
127.0.0.1    personal.com

要编辑此文件,请在终端中键入 sudo nano /etc/hosts,然后在编辑后键入 sudo killall -HUP mDNSResponder 以刷新 DNS 缓存。

【讨论】:

刚刚签入 gui finder> 右键单击​​文件夹 > 获取信息。是每个人 - 只读,我把每个人都改为 - 读写,然后重新启动 apache,但没有任何改变 hosts文件中没有personal.com,只是添加试一试:` 127.0.0.1 localhost 127.0.0.1 personal.com 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost ` 还尝试了刷新DNS缓存的命令,并重新启动了apache但没有解决【参考方案2】:

问题解决了。 奇怪,看起来重启 Apache 和缓存命令有时是不够的。 系统重启后消息变为 403-forbidden。

我检查了端口 lsof -nP -i4TCP:80 | grep LISTEN lsof -nP -i4TCP:8050 | grep LISTEN lsof -nP -i4TCP:9050 | grep LISTEN

它显示 4 个 httpd 进程正在侦听:80 即使 apache 停止,然后在重新启动后出现一个进程正在侦听正确的端口。

【讨论】:

以上是关于Apache 本地虚拟主机已列出但不起作用的主要内容,如果未能解决你的问题,请参考以下文章

不同端口上的 Apache 虚拟主机不起作用

apache vhost设置不起作用

PHP网站从本地主机更改域名不起作用

Autoconf 已安装但不起作用(ubuntu)

基于名称的虚拟主机在 OS X 10.10 Yosemite 上的 Apache 2.4.9 中不起作用/不允许

纱线已安装但不起作用。命令被识别,但没有纱线命令做任何事情。 Windows Powershell