将 NodeJS 服务器端口重定向到子域或文件夹(amazon ec2)

Posted

技术标签:

【中文标题】将 NodeJS 服务器端口重定向到子域或文件夹(amazon ec2)【英文标题】:Redirect a NodeJS server port to a subdomain or a folder (amazon ec2) 【发布时间】:2015-02-23 14:28:45 【问题描述】:

我已经在 Amazon EC2 上安装了 Apache/Linux。在一个实例中,我设置了 php 并将文件放在目录 var/www/html 下。在同一个实例上,我还在子文件夹 home/ec2-user/ 中安装了 NodeJS

我创建了一个新的 director home/ec2-user/site,我在其中放置了一个 javascript 文件,该文件在端口 8080 上启动 NodeJS 服务器脚本 (server.js)。

现在,如果 URL 是 http://domain.com,它会指向 PHP 目录 (var/www/html)。 URL http://domain.com:8080 显示输出表单 server.js

我的问题是: 我可以将http://domain.com:8080 重定向到http://sub.domain.com 或http://domain.com/sub 吗?我希望浏览器上的地址栏也将更改为。这可能吗?

【问题讨论】:

这可以通过使用您的网络服务器设置代理配置来完成。你没有提到你正在使用哪一个。可能是 Apache 或 nginx,具体说明会根据您使用的不同而有所不同。 @punund,它是 Apache!谢谢! 【参考方案1】:

我想我已经解决了这个问题。

首先,设置 Amazon S3 和 Route 53。 在 Amazon S3 中,添加存储桶“sub.domain.com”。然后静态网站托管>将所有请求重定向到另一个主机名,然后输入“domain.com” 在 Route 53 的托管区域“domain.com”中,创建记录集“sub.domain.com”。选择类型“A”,然后将别名设置为“domain.com”。 (TBH,我不完全确定上述步骤是否必要。)

然后更改代理设置。将文件命名为“httpd-vhosts.conf”。然后把它放在“etc/httpd/conf.d”下。详细步骤,查看这个答案:Second Virtual Host's DocumentRoot is changed after launching ec2 based on customized Amazon Linux AMI

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot "/var/www/html/"
</VirtualHost>

<VirtualHost *:80>
  ServerName sub.domain.com
  ProxyPass               /       http://domain.com:8080/
  ProxyPassReverse        /       http://domain.com:8080/
</VirtualHost>  

然后我在 Amazon 控制台上重新启动了 EC2 实例。欢迎任何更好的解决方案。

【讨论】:

以上是关于将 NodeJS 服务器端口重定向到子域或文件夹(amazon ec2)的主要内容,如果未能解决你的问题,请参考以下文章

树莓派/Debian HTTP 到 HTTPS 端口重定向

将 HTTP 流量从 443 端口重定向到 SSL

nginx端口重定向及反向代理

java.net.SocketException: Permission denied(将80端口重定向到8080端口)

java.net.SocketException: Permission denied(将80端口重定向到8080端口)

Nginx中处理重定向端口丢失问题