Yuv*_*sik 2 nginx amazon-web-services node.js nginx-reverse-proxy aws-alb
我在 AWS 中创建了一个环境,其中包括一个安装了 node js web-server 和 Nginx 的 EC2 实例,位于自签名应用程序负载均衡器后面。
我的 ALB 从 HTTPS (443) 获取请求并通过 HTTP (80) 将它们转发到 Nginx。我的 Nginx 应该从 ALB(在端口 80)获取请求并将它们转发到端口 9090(由节点 js Web 服务器使用)。
但是,我在将请求从 Nginx 转换为应用程序时遇到了问题。在 HTTP 上使用 ALB DNS 输入 URL 时,我能够访问上述页面(而不是我的网络服务器应用程序页面):

我所有的安全组都可以测试问题(在 443、80、9090 上)。所以端口不是问题,而是 Nginx 配置。
可能是什么问题/我应该做哪些进一步的配置?谢谢你。
当您拥有负载均衡器时,为什么要使用 Nginx?听起来就像您正在为一个 nodejs 应用程序使用两个 Nginx 服务器。SSL 操作也会消耗额外的 CPU 资源。最占用 CPU 的操作是 SSL 握手。
处理此问题的正确方法也将解决您的上述问题。
使用这种方法,您将在负载均衡器上终止 SSL/TLS,并且实例将接收纯 HTTP 连接,这将节省用于 SSL 加密/解密的 CPU 时间。
SSL 终止是指向代理服务器或负载平衡器的术语,它们接受 SSL/TLS 连接,但在连接到后端服务器时不要使用相同的连接。例如,暴露于 Internet 的负载均衡器可能会在端口 443 接受 HTTPS,但仅通过 HTTP 连接到后端服务器
出于测试目的,这应该有效。
server {
listen 80;
server_name example.com;
client_max_body_size 32M;
underscores_in_headers on;
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_pass_header device_id;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_read_timeout 120;
proxy_next_upstream error timeout invalid_header http_500;
proxy_connect_timeout 90;
proxy_pass http://localhost:9090;
}
}
Run Code Online (Sandbox Code Playgroud)
工作了。问题出在“/etc/nginx/nginx.conf”文件中。经过大量阅读和尝试 - 我发现在文件内它转发到 HTML(而不是我的 Nodejs Web 服务器)。更改了“root /path_to_ws”行,重新启动Nginx,它就工作了。感谢您的帮助!
| 归档时间: |
|
| 查看次数: |
4747 次 |
| 最近记录: |