我已经设置了我的 Apache 服务器,并且 PHP/MySQL 运行良好!
但问题是,我该如何保密,因为这是一个仅限开发服务器?将内容保密的唯一原因是,如果脚本出错,我不希望当它成为面向公众的网站时出现 Apache 错误(而且其他人也共享同一个网络!),而且我不太可能将我的 PC 用作网络主机 - 我更有可能使用网络主机提供商路线来访问实际的实时网站。
目前我可以通过三种方式访问它:
http://本地主机(或者http://127.0.0.1,替代方法和本地主机的 IP,但无论哪种方式我都可以接受!)
http 192.168.0.1(我的路由器的 IP)
http pc-name-here(我的电脑名称,显然这在 Windows 电脑之间有所不同!)
[注意,不能发布链接,因此对于另外两个,您必须像第一个一样插入冒号/正斜杠]。
但是,我只想通过第一个来访问它。它监听端口 80(我不想改变这一点)。这不可能吗,还是我搞错了?我对 PHP/网页设计的了解比网络方面的了解多一点,所以这对我来说是第一次!
基本上,我希望它只能通过该计算机上的 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>
- 这是一个例子,但我不确定这里什么是对的,什么是错的!
我的操作系统是Windows 7 Ultimate。
我确实浏览了一下网络,但其中一些内容对我来说似乎有点技术性。
你会推荐什么?
答案1
最简单的方法是通过Listen
指令。默认情况下,我们的 httpd.conf 中有一行内容:
Listen *:80
这意味着它将响应您计算机的所有网络地址上的端口 80 上的 ro 请求。将其更改为:
Listen 127.0.0.1:80
将告诉 apache 仅响应本地适配器上的请求,从而忽略其他任何请求。
答案2
监听选项可能是最好的,但仅供参考,你可以像这样使用允许/拒绝
<Directory /www/vhosts/localhost/>
Options All
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
Order deny,allow
告诉 Apache“除非特别允许,否则拒绝所有请求”(Order allow,deny
相反,IE 允许所有请求,除非特别阻止)
Deny from all
的作用与Order deny,allow
它将阻止来自所有 IP 的所有请求,除非您特别打开它们。使用两者似乎是一般做法Order deny,allow
,Deny from all
但我不能 100% 确定为什么当它们都做同样的事情时
Allow from 127.0.0.1
会说“允许来自 127.0.0.1 的所有请求”。127.0.0.1 将映射到本地主机,因此您可以使用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
将允许请求和
Allow from 192.168.0.2
Deny from 192.168.0.2
将拒绝来自 192.168.0.2 的请求
所以
Deny from 192.168.0.2
Allow from all
允许来自 192.168.0.2 的请求,即使该请求已被明确拒绝。
您还可以在 .htaccess 文件中或每个目录中使用允许/拒绝规则
答案3
我对 /etc/apache2 中的 ports.conf 进行了更改,以便每次引用监听端口时都只监听本地主机。其他文件似乎都没有 listen 命令。重新启动 apache 后,这些更改似乎产生了预期的效果。
/etc/apache2/ports.conf
NameVirtualHost *:80
########################## Listen 80
Listen 127.0.0.1:80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
###############################Listen 443
Listen 127.0.0.1:443
</IfModule>
<IfModule mod_gnutls.c>
##################################Listen 443
Listen 127.0.0.1:443
</IfModule>