如何在AWS中运行Angular 7服务器端渲染(SSR)通用内置
这个问题已经问过了,但没有解决我的问题 我正在尝试使用如何在AWS中运行Angular 7服务器端渲染(SSR)通用内置,angular,amazon-web-services,angular7,angular-universal,server-side-rendering,Angular,Amazon Web Services,Angular7,Angular Universal,Server Side Rendering,这个问题已经问过了,但没有解决我的问题 我正在尝试使用服务器端渲染运行我的Angular-7产品以下步骤: 我使用这个cmdng add@nguniversal/express引擎--clientProject创建了一个构建 并使用以下命令启动我的通用应用程序:cmdnpm run build:ssr&&npm run service:ssr 此步骤完成后,将创建以下文件夹和文件: AWS中的下一步: 将dist移到服务器上 安装PM2 npm安装pm2-g pm2启动dist/server.
服务器端渲染运行我的Angular-7
产品
以下步骤:
ng add@nguniversal/express引擎--clientProject创建了一个构建
npm run build:ssr&&npm run service:ssr
我不知道如何解决这个问题。提前感谢。这里的问题是,作为Web服务器的apache/nginx默认在端口80上呈现输出,而不是在angular服务器上呈现输出。 但是,Angular express服务器没有在端口80上运行(浏览器希望如此),因此,您必须将其实际运行的端口转发到端口80(默认http端口)。 以下是一些更详细的信息: Nginx: 如果您想在AWS上托管您的节点应用程序(Angular ssr),我个人建议使用elasticbeanstalk节点bean。默认情况下,这将为您处理所有这些问题,您只需“压缩”已获得的文件夹并将其上载即可。 其他一切(包括pm2)都将由该公司处理 Apache作为代理: 如果要使用apache作为代理,必须为域创建virtualhost并添加以下代码:
<VirtualHost node.example.com:80>
ServerName node.example.com
ProxyPass / http://localhost:8000/ connectiontimeout=5 timeout=30 # optional timeout settings
</VirtualHost>
ServerName node.example.com
ProxyPass/http://localhost:8000/ connectiontimeout=5超时=30#可选超时设置
这里的问题是,作为Web服务器的apache/nginx默认在端口80上呈现输出,而不是在angular服务器上呈现输出。
但是,Angular express服务器没有在端口80上运行(浏览器希望如此),因此,您必须将其实际运行的端口转发到端口80(默认http端口)。
以下是一些更详细的信息:
Nginx:
如果您想在AWS上托管您的节点应用程序(Angular ssr),我个人建议使用elasticbeanstalk节点bean。默认情况下,这将为您处理所有这些问题,您只需“压缩”已获得的文件夹并将其上载即可。
其他一切(包括pm2)都将由该公司处理
Apache作为代理:
如果要使用apache作为代理,必须为域创建virtualhost并添加以下代码:
<VirtualHost node.example.com:80>
ServerName node.example.com
ProxyPass / http://localhost:8000/ connectiontimeout=5 timeout=30 # optional timeout settings
</VirtualHost>
ServerName node.example.com
ProxyPass/http://localhost:8000/ connectiontimeout=5超时=30#可选超时设置
谢谢你的建议,但我已经在apache服务器上运行了另一个网站,目前我需要检查同一服务器上的另一个项目。这意味着我加载了另一个项目URL,如“dev.myproject.com”,它可以正常工作,但我需要重新加载子文件夹,它将在浏览器中显示文件列表@Simoneritsch,但您需要使用端口代理版本才能使其正常工作。我更新了apache代理解决方案的答案我尝试更改我的域ServerName dev.choosecubby.com ProxyPass/https://dev.choosecubby.com:9000/ connectiontimeout=5 timeout=30#可选超时设置
它显示httpd.service的作业失败,因为控制进程失败已退出,错误代码为。有关详细信息,请参阅“systemctl status httpd.service”和“journalctl-xe”。
当我重新启动apacheso时,systemctl status httpd.service
返回什么?试着在你的服务器上运行它,以了解它失败的更多细节。“ProxyPass”也必须是,因为您想将服务器内部端口8000代理到80。谢谢您的建议,但我已经在apache服务器上运行了另一个网站,目前我需要检查同一服务器上的另一个项目。这意味着我加载了另一个项目URL,如“dev.myproject.com”“它可以正常工作,但我需要重新加载子文件夹。它将在浏览器中显示文件列表@Simoneritsch,但您需要使用端口代理版本才能使其正常工作。我更新了apache代理解决方案的答案我尝试更改我的域ServerName dev.choosecubby.com ProxyPass/https://dev.choosecubby.com:9000/ connectiontimeout=5 timeout=30#可选超时设置
它显示httpd.service的作业失败,因为控制进程失败已退出,错误代码为。有关详细信息,请参阅“systemctl status httpd.service”和“journalctl-xe”。
当我重新启动apacheso时,systemctl status httpd.service
返回什么?试着在你的服务器上运行它,以了解它失败的更多细节。此外,“ProxyPass”必须是,因为您要将服务器内部端口8000代理到80。