【问题标题】:how to use different domain names for different processes running on same server如何为同一服务器上运行的不同进程使用不同的域名
【发布时间】:2017-06-28 14:50:40
【问题描述】:

假设我正在运行三个不同的站点。端口 3000 上的 Node.js 应用程序,端口 80 上的 Apache/PHP,然后端口 5000 上的 Go 应用程序。

如何让三个不同的域名分别访问每个端口?

我正在考虑所有域都引用的端口 80 上的基本路由系统,然后程序查看 url 并重定向到正确的端口。这是推荐的吗?有没有更好的办法?

谢谢

【问题讨论】:

  • 是的,你有基本的理论。由于 Web 访问是通过端口 80(或 443 用于 ssl),因此您需要像 nginx 这样的反向代理将流量转发到正确的端口
  • 你的网络服务器是什么? Nginx 是一个不错的反向代理。
  • 都是基于http的吗?需要与 Go 应用程序对话的客户端太冷了,首先在端口 80 上连接到 Apache,然后重定向到 domainname.com:5000?这是可以做到的。问题是您的客户是否可以处理重定向
  • if($_SERVER['HTTP_HOST' == 'go.domain.com') { header('位置:go.domain.com:5000');出口(); }
  • 是的,正是我的想法。这是一种可以接受的方式吗?

标签: php node.js web-services go dns


【解决方案1】:

如果您已经在使用 Nginx,您可以非常轻松地为不在端口 80 上的应用设置基于命名的反向代理虚拟主机:

server {
    listen *:80;
    server_name nodeapp.mydomain.com;
    location / {
        proxy_pass http://localhost:3000;
    }
}

server {
    listen *:80;
    server_name goapp.mydomain.com;
    location / {
        proxy_pass http://localhost:5000;
    }
}

【讨论】:

  • 他们根本不会用理智的名字。我更多的是在寻找 goapp.com、phpapp.com 等(不是子域)......还是它仍然有效?
  • 仍然有效。服务器名称可以是任何名称,只要它是解析为您的 IP 的有效 DNS 名称即可。
  • 哦,太好了。这些不同的 proxy_passes 究竟如何被视为端口 80?
  • 入站端口应始终为 80,这很重要。 (如果您使用的是 HTTPS,则为 443。)这是您要根据应用程序更改的 proxy_pass 端口。
  • 酷。最后,这个文件在服务器哪里处理/写入?
【解决方案2】:

如果您在端口 80 上运行的只是一个代理层,您可以改用 caddy,它本身是用 Go 编写的。您的 Caddyfile 需要这样的内容:

nodeapp.mydomain.com {
    proxy / localhost:3000
}

goapp.mydomain.com {
    proxy / localhost:5000
}

如果没有,您仍然可以使用 caddy 并将您的 PHP 应用程序移动到不同的端口。

我建议使用 caddy,因为它的创建者到处都在推动安全性(如果您的网站适用,您会注意到您会自动获得 https)。配置(在 Caddyfile 中完成)通常也很简短,很容易理解。 Caddy 具有广泛的用例,并且可以附带插件来执行您能想到的任何事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2018-05-28
    • 2014-01-02
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多