编辑:我认为问题的一部分是我需要使用端口 8080,但我仍然收到“无法连接”消息。我需要在 /etc 中配置什么才能使其可访问吗?
--
这似乎是一个显而易见的问题,但我无法找到任何有用的信息。通常,当访问服务器上特定目录中的文件时,我可以创建虚拟主机、分配域、根目录位置等 - 但是,我的情况是我有服务器空间,并且只需要使用主机名来访问文件。这可能吗?
例如,假设主机名是 123hostname.com,而我想要访问的文件位于 /home/sub-directory/filename.php。我如何通过浏览器访问它?
我试过了:
http://123hostname.com/home/sub-directory/filename.php
...以及该主题的一些其他变体(我无法发布,因为新用户只能在消息中使用一个链接)。但总体上还是卡住了。任何帮助——即使只是让我知道如果没有一些额外的配置,这是不可能的——都会很棒。谢谢!
答案1
通常,Web 服务器配置为仅允许访问特定目录中的用户文件,传统上是 public_html 目录。url 格式为http://example.com/~user/dir/file.html这将转换为 /home/user/public_html/dir/file.html
这是出于安全原因。想象一下,如果任何人都可以从网络访问您的 .ssh_keys 目录,那么任何人都可以侵入该帐户。
因此,您无法直接做您想做的事情。
另一方面,通过主机名访问服务器并没有什么不妥。虚拟主机只是同一台服务器的另一个名称,通常提供不同的内容。虚拟主机能做的事情,只要使用正确的主机名就能做。
答案2
通过 http 提供对系统上每个文件的读取权限(至少是 Apache 用户可以读取的文件)通常并不理想。但是,如果您确实想要这样做,这是可以做到的。
针对您的问题,有两个可能有用的答案。第一个是设置默认 VirtualHost(或者根本不配置任何 VirtualHost)。第二个是使用 mod_userdir。
如果 Web 服务器上存在绑定到 Web 服务器主 IP(或至少是服务器主机名解析到的 IP)的 VirtualHost 条目,则将使用第一个列出的 VirtualHost 条目作为默认值。当通过 IP 地址或解析到 IP 且没有其他匹配条目的主机名访问 Apache 时,将显示其内容。
如果主 IP 上不需要 VirtualHost 条目,则 Apache 将从分配给 DocumentRoot 指令的目录中提供内容。
如果您希望从多个不同的用户帐户提供内容,而无需配置任何 VirtualHosts 或 Aliases,那么您可能希望使用 mod_userdir。Apache 文档对 mod_userdir 的描述比我提供的更好。