使 apache 只能通过 127.0.0.1 访问,这可能吗?

lin*_*t53 20 windows-7 loopback httpd.conf apache-2.2

我已经设置了我的 Apache 服务器,并且 PHP/MySQL 运行良好!

但问题是,由于它是一个仅限开发的服务器,我该如何保密?保持内容私密的唯一原因是如果脚本出错,如果它成为面向公众的站点(以及其他人也共享同一个网络的事实!),我不希望出现 Apache 错误,而且我更少可能将我的 PC 用作虚拟主机 - 我更有可能使用虚拟主机提供商的路线来访问实际的实时站点。

目前我可以通过三种方式访问​​它:

  • http://localhost(或http://127.0.0.1,另一种方式和 localhost 的 IP,但我可以接受任何一种方式!)

  • http 192.168.0.1(我的路由器IP)

  • http pc-name-here(我的 PC 的名称,显然这在 Windows PC 之间有所不同!)

[注意,不能发布链接,因此对于其他两个,您必须像第一个一样插入冒号/正斜杠]。

但是,我只想通过第一个访问它。它正在侦听端口 80(我不想改变它)。这是不可能的,还是我错了?我对 PHP/webdesign 的了解比网络方面多一点,所以这对我来说是第一次!

基本上,我希望它只能通过该机器上的 localhost 访问,而不是外部 IP 地址或 192.168.0.1 。

我是否需要编辑 httpd.conf 并在每个测试站点上使用拒绝,或者还有其他解决方案吗?

例子:

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    order allow,deny
    allow from 127.0.0.1
            deny from 192.168.0.1
            deny from my-pc-name
</Directory>
Run Code Online (Sandbox Code Playgroud)
  • 这是一个例子,但我不确定这里是对还是错!

我的操作系统是 Windows 7 Ultimate。

我确实环顾了“网络”,但其中一些对我来说似乎有点技术性。

你会推荐什么?

Sma*_*ger 40

最简单的方法是通过Listen指令。默认情况下,我们的 httpd.conf 中有一行内容为:

Listen *:80
Run Code Online (Sandbox Code Playgroud)

这意味着它将在您计算机的所有网络地址上的端口 80 上响应 ro 请求。将其更改为:

Listen 127.0.0.1:80
Run Code Online (Sandbox Code Playgroud)

将告诉 apache 只响应本地适配器上的请求,从而忽略其他任何内容。


Smu*_*dge 13

监听选项可能是最好的,但作为一个仅供参考,您可以像这样使用允许/拒绝来做到这一点

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Directory>
Run Code Online (Sandbox Code Playgroud)

Order deny,allow告诉 Apache“除非特别允许,否则拒绝所有请求”(Order allow,deny相反,IE 允许所有请求,除非特别阻止)
Deny from all做了类似的事情Order deny,allow,因为它将阻止来自所有 IP 的所有请求,除非您特别打开它们。两者都使用似乎是一般做法Order deny,allowDeny from all但我不能 100% 确定为什么当他们都做同样的事情时会
Allow from 127.0.0.1说“允许来自 127.0.0.1 的所有请求”。127.0.0.1 将映射到 localhost 所以你可以使用http://127.0.0.1/http://localhost/并且它会被允许

这将为在本地主机上请求该站点的任何人提供 403(禁止)错误

其他一些有用的东西;
Allow from 192.168.0.将允许来自您网络上任何人的请求(假设您的网络是 192.168.0.0-192.168.0.255)
允许/拒绝规则按顺序处理,因此

Deny from 192.168.0.2
Allow from 192.168.0.2
Run Code Online (Sandbox Code Playgroud)

将允许请求和

Allow from 192.168.0.2
Deny from 192.168.0.2
Run Code Online (Sandbox Code Playgroud)

将拒绝来自 192.168.0.2 的请求

所以

Deny from 192.168.0.2
Allow from all
Run Code Online (Sandbox Code Playgroud)

将允许来自 192.168.0.2 的请求,即使它已被明确拒绝。

您还可以在 .htaccess 文件中或在每个目录的基础上使用允许/拒绝规则