问题描述
我能够设置从我在 NameCheap 注册的域到托管在 AWS EC2 实例上的 Node.js 站点的 DNS 转发。但是,我必须将 :3000 端口号添加到 URL 中才能查看我的站点。显然我更喜欢不必附加端口号,所以我开始研究这个,看起来我需要在我的 AWS 服务器上设置一个带有 Nginx 的反向代理。我有几个问题希望得到大家的反馈。
- 在我的 AWS EC2 服务器上使用 Nginx 作为反向代理是最好的解决方案吗?
- 我是否应该在我的本地环境中做同样的事情,以便在我从 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 管道将您的服务器项目与远程源连接起来是一种很好的做法。