• [翻译]FollowSymLinks


    FollowSymLinks

    原文地址

    FollowSymLinks 是一个服务器上的配置指令,告诉服务器遵循所谓的符号链接。
    它是Follow Symbolic Links的缩写,是对网站安全性至关重要的一个配置指令。

    在接下来的内容中,我们将重点介绍一下关于FollowSymLinks的常识知识以及它与Apache服务器和Drupal内容管理系统的关系。

    首先我们要知道在哪儿可以找到FollowSymLinks指令,以及它与什么有关。

    可以在两个地方找到FollowSymLinks指令:httpd.conf和.htaccess文件中。

    httpd.conf文件用于服务器配置,这些配置信息在服务器启动之前加载。文件中包含对服务器的默认配置。下面是这个文件的例子演示:
    FollowSymLinks httpd.conf

    .htaccess文件用于在一些特定文件夹中覆盖服务器的默认配置。下面图片中展示的例子:针对test_files文件夹,.htaccess文件覆盖了httpd.conf文件中的FollowSymLinks配置指令。注意,与httpd.conf文件中的不同:httpd.conf文件中使用的是Options FollowSymLinks,.htaccess文件中使用的是Options +FollowSymLinks
    FollowSymLinks .htaccess

    我们知道在哪儿可以找到FollowSymLinks指令之后,下面介绍它用来干什么。

    我们已经知道FollowSymLinks告诉服务器在查找文件时遵循符号链接,但是它到底是什么意思呢?

    符号链接类似于Windows的快捷方式。网站通常被用来展示一些图片和内容。这些图片和内容的真实地址可能不是你访问的那个地址。假设你的浏览器正在浏览一个网站的内容,然后你点击鼠标右键查看网页源代码,你会发现网页上显示的图片是这样的IMG SRC="/system/files/images/image.png"。如果你用浏览器打开这个链接,浏览器就会把这个图片展示出来。但是,如果你登录服务器,根据/system/files/images/这个地址查找图片,最终没有找到这个图片。实际上这个图片没有放在/system/files/images/文件夹下,而是放在了/pictures文件夹下。

    当你访问网站,浏览器通过/system/files/images/在服务器上查找图片时,服务器怎么知道要把/pictures文件夹下的image.png返给浏览器呢?那么这个所谓的符号链接就是负责做这件事的。在系统中,一个动态链接告诉服务器:如果有人请求/system/files/images/image.png,那么把/pictures/image.png返给他。
    FollowSymLinks在这里扮演什么角色呢?

    FollowSymLinks与服务器的安全相关。在处理服务器时不能让事情模糊不清,你要明确谁对什么有权限。FollowSymLinks指令告诉服务器要不要遵循符号链接。也就是说,在上面的例子中,如果FollowSymLinks被禁止,根据其他配置项,浏览器请求/system/files/images/image.png可能会得到403或404错误。

    符号链接和硬链接之间的区别是什么

    除了符号链接,我们也来谈谈硬连接(hard links)。可以在这篇文章找到更多关于硬链接的信息:Difference between symbolic link and hard link

    FollowSymLinks对于使用了Drupal的网站很重要。因为Drupal默认使用非公开的下载方式,并且在重写URL时使用符号链接。在使用mod_rewrite时,FollowSymLinks必须是开启的。如果在使用mod_rewrite时FollowSymLinks是禁用状态,那么你将会遇到500错误。

    注意,FollowSymLinks默认在httpd.conf文件中通常是开启状态,所以你不需要再在.htaccess文件中配置这个指令。
    还要注意,如果把FollowSymLinks配置在httpd.conf的<Location>部分,FollowSymLinks将会被忽略。

    FollowSymLinks需要你权衡服务器性能和安全性,根据你的使用场景做决定。

    如果FollowSymLinks没有开启,Apache在查找文件时会产生额外的系统开销。比如,假如你的服务器请求/index.html文档,Apache会在依次/www/www/htdocs/www/htdocs/index.html中查找。这些额外的系统开销将会造成延迟。请求结果没有被缓存,那么这些额外的系统开销将会出现在每一次请求中。

    如果你注重性能,就使用Options FollowSymLinksOptions FollowSymLinks允许Apache以绝大多数Unix应用那样遵循符号链接:Apache不需要检查这个文件是不是符号链接。根据实际情况决定是开启FollowSymLinks还是禁用它。

    还有其他地方的配置与FollowSymLinks相关吗?

    有。 查看这两篇内容了解更多: Order Allow,DenyIndexIgnore

  • 相关阅读:
    cocos2dx的MotionStreak.cpp解析(-)
    gcc/g++基本命令简介
    C++编译器与链接器工作原理
    简单介绍 ARC 以及 ARC 实现的原理
    求两个链表表示的数的和
    对象内存结构中的 isa 指针是用来做什么的?
    按层遍历二叉树的节点
    一个 Objective-C 对象的内存结构是怎样的?
    创建一个可以被取消执行的 block
    TCP&UDP
  • 原文地址:https://www.cnblogs.com/fogwind/p/15261776.html
Copyright © 2020-2023  润新知