为 AWS 上托管的 Node.js 应用程序设置 DNS 转发

问题描述

我能够设置从我在 NameCheap 注册的域到托管在 AWS EC2 实例上的 Node.js 站点的 DNS 转发。但是,我必须将 :3000 端口号添加到 URL 中才能查看我的站点。显然我更喜欢不必附加端口号,所以我开始研究这个,看起来我需要在我的 AWS 服务器上设置一个带有 Nginx 的反向代理。我有几个问题希望得到大家的反馈。

  1. 在我的 AWS EC2 服务器上使用 Nginx 作为反向代理是最好的解决方案吗?
  2. 我是否应该在我的本地环境中做同样的事情,以便在我从 Git 中提取时所有配置都准备就绪,还是我应该只在我的 AWS 环境中使用 Nginx 并在生产中以不同的方式运行它?我使用 Windows 进行本地开发,而 Nginx 设置似乎更适合 Linux。

解决方法

大多数常见的应用程序都能够作为自己的网络服务器运行,但 Nginx 网络服务器能够从这些功能中提供以下主要好处:

  • 负载均衡
  • 提高安全性
  • 更好的性能
  • 轻松记录和审计
  • 加密连接

如果你已经在你的服务器中安装了 nginx 和 nodejs,你可以像这样配置你的反向代理:

打开“默认”配置文件:

sudo nano /etc/nginx/sites-available/default

在那里编写适当的配置:

server {
        # optional
        client_max_body_size 30M;
        listen 80 default_server;
        listen [::]:80 default_server;

        # some static directory path
        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        # You can leave this _
        # server_name _;
        # but if you have already connected your domain with your server:
        server_name example.com www.example.com;

        location / {
                proxy_pass http://localhost:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }
}

确保您在上次更改后成功测试了配置:

sudo nginx -t

重启 Nginx

sudo service nginx restart
# or
sudo systemctl restart nginx

运行您的应用并检查网站。 希望它会起作用,如果有任何问题,请告诉我您的评论。

关于本地环境:不需要做任何事情。您可以像以前一样处理您的项目。对本地无事可做。只需将其连接到远程 git 源并在任何更改后重新启动您的节点服务器。 通过 CI/CD 管道将您的服务器项目与远程源连接起来是一种很好的做法。