nginx 在AWS中托管后无法启动支付或打开支付网关

bd1hkmkf  于 2023-11-17  发布在  Nginx
关注(0)|答案(1)|浏览(155)

我已经在MERN堆栈中创建了一个基于电子商务的应用程序,后端托管在AWS EC2中,前端托管在Vercel中。所以我的问题是在AWS EC2中托管后端后,我看到我无法打开支付网关。我猜测可能是AWS本身阻止了支付URL访问。在我的Chrome浏览器的网络选项卡中,它显示504 gateway timeout错误,strict-origin-when-cross-origin。但在AWS托管之前,我也尝试了OnRender平台在那里托管,它工作得很好。
我在获取超时错误时所做的事情-在AWS中,我将安全组中的出站规则设置为http和https,并且还有入站规则ssh,https和http。但我仍然无法访问支付网关。我使用Eazebuzz支付getway。
我正在共享路由和控制器
我的路由是本地透视http://localhost:5000/API/schemes/:id/initiate_payment

控制器

  1. export const initiatePaymentWithEazebuzz = expressAsyncHandler(async (req, res) => {
  2. const response = await GenSchema.findById({ _id: process.env.GEN_CONFIG_CONFIGURATION_ID });
  3. const scheme = await Scheme.findOne({ "schemeData._id": req.params.id }, { "schemeData.$": 1, status: 1, user: 1 });
  4. if (scheme.status !== "active") {
  5. return res.status(400).json({ error: "This Scheme isn't active anymore. You can't make a payment." });
  6. }
  7. const user = await User.findById(scheme.user);
  8. const amount = scheme.schemeData[0].amount.toFixed(2);
  9. const phone = user.mobile_number.slice(3);
  10. const firstname = user.name.split(" ")[0];
  11. const productinfo = scheme.schemeData[0].month_name;
  12. const email = user.email;
  13. const key = response.eazebuzz_merchant_key;
  14. const salt = response.eazebuzz_salt;
  15. // const key = process.env.EASEBUZZ_KEY;
  16. // const salt = process.env.EAZEBUZZ_SALT;
  17. const txnid = crypto.randomBytes(10).toString("hex");
  18. const hashSequence = generateHashForEazeBuzz({ key, txnid, amount, productinfo, firstname, email, salt });
  19. const url = `${process.env.BASE_URL}/payment_result`;
  20. const formData = {
  21. key,
  22. txnid,
  23. amount,
  24. email,
  25. phone,
  26. firstname,
  27. hash: hashSequence,
  28. productinfo,
  29. furl: url,
  30. surl: url,
  31. };
  32. const eazebuzz_env = process.env.EAZEBUZZ_ENV;
  33. const geturl = (env) => {
  34. let url_link;
  35. if (env === "test") {
  36. url_link = "https://testpay.easebuzz.in/";
  37. } else if (env === "prod") {
  38. url_link = "https://pay.easebuzz.in/";
  39. } else {
  40. url_link = "https://testpay.easebuzz.in/";
  41. }
  42. return url_link;
  43. };
  44. let payment_url = geturl(eazebuzz_env);
  45. let call_url = payment_url + "payment/initiateLink";
  46. const options = {
  47. headers: {
  48. "Content-Type": "application/x-www-form-urlencoded",
  49. Accept: "application/json",
  50. },
  51. };
  52. try {
  53. const { data } = await axios.post(call_url, formData, options);
  54. if (data.status === 1) {
  55. await Scheme.findOneAndUpdate(
  56. { "schemeData._id": req.params.id },
  57. {
  58. $set: {
  59. "schemeData.$.txnid": txnid,
  60. },
  61. }
  62. );
  63. return res.json({ access_url: data.data, key, env: eazebuzz_env });
  64. }
  65. } catch (error) {
  66. return res.json({ message: error.message });
  67. }
  68. });

字符串
这里是NGINX sites-availability config我做的,如果任何事情chnage需要启动付款.

  1. server {
  2. listen 80 default_server;
  3. listen [::]:80 default_server;
  4. listen 443 ssl default_server;
  5. listen [::]:443 ssl default_server;
  6. root /var/www/html;
  7. # Add index.php to the list if you are using PHP
  8. index index.html index.htm index.nginx-debian.html;
  9. server_name jewellerymine.jewellerskart.in;
  10. ssl_certificate /etc/nginx/ssl/client-certificate.crt;
  11. ssl_certificate_key /etc/nginx/ssl/private-ssl.key;
  12. location /api {
  13. rewrite ^\/api\/(.*)$ /api/$1 break;
  14. proxy_pass http://localhost:5000;
  15. proxy_set_header Host $host;
  16. proxy_set_header X-Real-IP $remote_addr;
  17. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  18. }
  19. }

kx7yvsdv

kx7yvsdv1#

我已经找到了解决方案经过一些研究,我发现,有一些参数需要激活eazebuzz支付网关,这是在我的环境变量,不幸的是,我忘记了发送特定的变量到生产,我也看到了错误来自cors的起源,所以我添加了eazebuzz支付网址在我的cors设置允许的起源,因此问题解决了。

相关问题