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”。
- 我尝试按照 nuxt-mail npm/github page
上的建议在 nuxt.config.js 上设置 axios baseURL
- 我在 .nuxt/router.js 中没有看到 send 或 mail 的路径
文件: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 上,我需要在相应的安全组上启用出站规则。
我将 nuxt-mail 配置为从我们的 nuxt 应用程序发送电子邮件。 我的应用程序的 baseURL 更改为“https://localhost:3000/app”而不是“https://localhost:3000” 因此,nginx 将所有对“/”的调用重定向到静态应用程序。以及所有对动态应用程序的“/app”调用。 问题是在生产环境中,nuxt-mail 无法通过 post 将电子邮件发送到“/app/mail/send”。
- 我尝试按照 nuxt-mail npm/github page 上的建议在 nuxt.config.js 上设置 axios baseURL
- 我在 .nuxt/router.js 中没有看到 send 或 mail 的路径
文件: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 上,我需要在相应的安全组上启用出站规则。