apache - 如何使用 Apache 将子域转发到同一 IP 地址上的新端口?

标签 apache dns web subdomain portforwarding

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

8年前关闭。




Improve this question




我有一台 NAS/服务器 24/7 全天候在家运行,并在其上运行许多不同的服务。我现在有一个指向它的域名,并且想知道是否可以创建指向不同服务的不同端口的子域。例如:

  • http://subsonic.mydomain.com --> XXX.XXX.XXX.XXX:4040
  • http://minecraft.mydomain.com --> XXX.XXX.XXX.XXX:25565
  • http://files.mydomain.com --> XXX.XXX.XXX.XXX:4082

  • 我有一个 D-LINK 路由器,它当前将所有这些端口转发到我的 IP 为 192.168.0.104 的 NAS/服务器。

    编辑:服务器正在运行 Ubuntu 12.04。

    我需要运行什么服务或代理才能识别子域并相应地路由流量?或者我可以使用 apache 虚拟主机来处理这个问题,因为这些子域将进入端口 80,哪个 apache 正在监听?或者虚拟主机不是这样工作的吗?

    任何信息、想法或提示都会有所帮助/有用。

    最佳答案

    有两种方法可以做到这一点。您可以使用 httpd.conf 的 VirtualHost 部分。或者您可以在您的 .htaccess 中执行此操作. (假设子域解析为与您的网络服务器相同的 IP)

    httpd.conf :

    <VirtualHost *:80>
        ServerName subsonic.mydomain.com
        redirect / http://mydomain.com:4040/
    </VirtualHost>
    

    .htaccess :
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^subsonic\.mydomain\.com$ [NC]
    RewriteRule ^(.*)$ http://mydomain.com:4040/$1 [R=301]
    

    文档:
    - Guide to creating name-based virtual hosts
    - Core ,包括 VirtualHostNameVirtualHost
    - Redirect
    - mod_rewrite guide

    关于apache - 如何使用 Apache 将子域转发到同一 IP 地址上的新端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12715195/

    相关文章:

    language-agnostic - 如何检查域名是否存在?

    php - 使用php获取网站ip

    dns - 如何使用对应的DS验证DNSKEY

    javascript - 如何从文件系统访问 api window.showDirectoryPicker() 获取选定的目录路径

    php - XAMPP-python脚本执行

    apache - Redhat "httpd"无法启动了。显示 "suEXEC"和 "SELinux"通知

    php - apache .htaccess 到 nginx 重写规则

    apache - Docker构建后的php应用文件权限

    css - 网站在实时服务器上时排版基线和大小发生变化

    testing - 用于验证网站的任何好的命令行工具(用于构建服务器)?