使用 Shiny 时阻止直接访问端口 3838

使用 Shiny 时阻止直接访问端口 3838

我有一台 Shiny 服务器监听端口 3838(Centos 6 环境)。我想阻止直接访问

http://www.mywebsite.com:3838

这会显示 Shiny 文件和目录。每当我尝试通过 htaccess 阻止访问时,我最终都会阻止对该站点的所有访问。有什么方法可以完成这项任务吗?我仍然需要在内部打开端口,以便可以请求 Shiny 应用程序。Sam

答案1

你可以做几件事,首先是阅读文档对于配置选项它可能确实很有帮助。

在文档中你会注意到该directory_index指令。

启用后,如果客户端请求目录且不存在 index.html 文件,则会自动创建目录内容列表并返回给客户端。如果自定义配置文件中不存在此指令,则默认行为是禁用目录索引。但是,如果根本没有配置文件(换句话说,默认配置文件已启用它),则会启用它。

因此,看起来您没有配置文件,或者 directory_index 已明确启用。这导致了几种潜在的解决方案。

  • 验证配置文件的存在并确保您正在使用它。
  • 确保配置文件(如果正在使用)的 directory_index 定义正确。
  • 在目录中添加一个index.html文件(这样就不需要生成目录索引了)。

答案2

如果iptables您可以接受,您可以按如下方式阻止外部流量:如果您的内部网络是 192.168.1.0/24,您可以执行以下操作:

iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 3838 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 3838 -j DROP

这首先授予内部网络对该端口的访问权限,然后拒绝其他任何人。该DROP选项导致它简单地丢弃数据包,从而导致连接请求超时,如果您想要更友好/更明显,您可以改用REJECT

如果你只需要本地主机访问该端口,你可以127.0.0.1替换192.168.1.0/24

相关内容