nuxt-mail 使用 nginx 反向代理失败并显示 504

nuxt-mail fails with a 504 with nginx reverse proxy

我将 nuxt-mail 配置为从我们的 nuxt 应用程序发送电子邮件。 我的应用程序的 baseURL 更改为“https://localhost:3000/app”而不是“https://localhost:3000” 因此,nginx 将所有对“/”的调用重定向到静态应用程序。以及所有对动态应用程序的“/app”调用。 问题是在生产环境中,nuxt-mail 无法通过 post 将电子邮件发送到“/app/mail/send”。

  1. 我尝试按照 nuxt-mail npm/github page
  2. 上的建议在 nuxt.config.js 上设置 axios baseURL
  3. 我在 .nuxt/router.js 中没有看到 sendmail 的路径

文件:contact.vue 注意:WEBSITE_DOMAIN 指向 https://localhost:3000 本地和有效的生产网络域,格式为:https://www.production_website.com

<script>
...
methods: {
...
sendMail(){
  this.$axios.post( 
    this.$config.WEBSITE_DOMAIN+'/app/mail/send', 
    {
    ...
     }
...
}
...
</script>

文件:nuxt.config.js

...
export default{
...
router: {
    base: '/app/'
  },
...
}

注意:我确实配置了从nginx到应用服务器的上游日志

在生产环境中从 nginx 访问日志

49.205.150.249 - - [04/May/2022:15:30:54 +0000] "POST /app/mail/send HTTP/1.1" 504 167 "https://www.<xxxxxxxxx_NAME>.com/app/contact" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"

生产环境中 nginx 的错误日志

2022/05/04 15:30:54 [error] 2106#2106: *38 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 49.205.150.249, server: <xxxxxxxxx_NAME>.com, request: "POST /app/mail/send HTTP/1.1", upstream: "https://<xxxxxxxxx_IP>:3000/app/mail/send", host: "www.<xxxxxxxxx_NAME>.com", referrer: "https://www.<xxxxxxxxx_NAME>.com/app/contact"

我在这里错过了什么?不过,它在我的舞台上效果很好。

生产实例上允许 SMTP 的端口未打开。在 AWS EC2 上,我需要在相应的安全组上启用出站规则。