Scale up as you grow — whether you're running one virtual machine or ten thousand.

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.

so I am getting the error as mentioned in the title only for one particular GET request. That GET requests processes data and renders a PDF file.
When i checked the nginx error logs, I see three lines of error throw up each time this URL is hit. Following are the errors
So, I started my research on these errors, and as suggested tried a lot of configuration changes in my nginx config file like
This is my first time using nginx. I followed a youtube tutorial to deploy my app on a domain and then add a SSL certificate as well (though have to admit I do understand now the basic concepts of how reverse proxy works and configuring after spending two full days trying to troubleshoot this problem, so I wonder what is it that is causing this issue).
Before this I had deployed the app on the free tier of heroku and I faced no issue with this GET request on this particular URL.
Following is my current configuration file. It is at this path
/etc/nginx/sites-available/default
upstream localhost:3000 {
zone upstreams 64K;
server 127.0.0.1:3000 max_fails=0 fail_timeout=2s;
keepalive 8;
}
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name digitalawb.in www.digitalawb.in;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:3000/;
proxy_read_timeout 90;
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 24 4k;
proxy_busy_buffers_size 8k;
proxy_max_temp_file_size 2048m;
proxy_temp_file_write_size 32k;
proxy_redirect http://localhost:3000/ https://digitalawb.in/;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/digitalawb.in/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/digitalawb.in/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = www.digitalawb.in){
return 301 https://$host$request_uri;
}
if ($host = digitalawb.in){
return 301 https://$host$request_uri;
}
listen 80 default_server;
listen [::]:80 default_server;
server_name digitalawb.in www.digitalawb.in;
return 404;
}
Also following is the content of the nginx.conf file which is at the following location
/etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
#multi_accept on;
}
http {
# Basic Settings
sendfile on;
top_nopush on;
top_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
#SSL settings
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
#Logging settings
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
#Gzip settings
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+res text/javascript;
#virtual host configs
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Following are my nodejs code details
exports.boxSticker = async(req, res, next) => {
try{
let orderId = req.params.orderId
let userId = req.user.id
let order = await Order.findById(orderId).populate('client').exec()
let user = await User.findById(userId)
const doc = new PDFdocument({
autoFirstPage: false
})
if(order.boxDetails.length == 0){
return res.render('error', {message: `No Box Details added. Please add Box Details first before generating AWB`, statusCode: '400'})
}
const canvas = createCanvas()
const context = canvas.getContext('2d')
JsBarcode(canvas, order.awbNumber)
canvas.toBuffer((err, buffer) => {
if(err) next(err)
fsPromises.writeFile(`box_${order.awbNumber}.png`, buffer)
.then(() => {
for(let i = 0; i next(err))
})
res.setHeader('Content-type', 'application/pdf')
res.set({ 'Content-Disposition': `inline; filename=boxsticker_${order.awbNumber}.pdf` })
stream = doc.pipe(res)
doc.end()
stream.on('finish', () => {
fs.unlink(`box_${order.awbNumber}.png`, (err) => {
if(err) next(err)
})
})
}catch(err){
next(err)
}
}
exports.boxstickergenerate = (current, doc, order, user) => {
doc.info['Title'] = `boxsticker${order.awbNumber}`
doc
.fillColor('black')
.rect(40, 75, 150, 30).fill()
.lineWidth(1.5)
.moveTo(40, 120)
.lineTo(560, 120).stroke()
doc
.fillColor('white')
.font('Helvetica-Bold')
.fontSize(20)
.text(order.service, 40, 80)
doc.fillColor('black')
.font('Helvetica-Bold')
.fontSize(11)
.text('FROM', 40, 140)
.font('Helvetica')
.text(order.consignor, 40, 155)
.text(`${order.consignorAddress1}, ${order.consignorAddress2}, ${order.consignorCity}, ${order.consignorState}, ${order.consignorPincode}`, 40, 170, {width: 350, align:'left'})
.font('Helvetica-Bold')
.text(order.origin, 40, 215)
.font('Helvetica')
.text(`TEL NO: ${order.consignorContactNumber}`, 40, 230)
.lineWidth(1.5)
.moveTo(40, 260)
.lineTo(560, 260).stroke()
.font('Helvetica-Bold')
.fontSize(16)
.text(`BOX NO ${current + 1}/${order.numberOfBoxes}`, 465, 140, {width: 100, align:'left'})
.rect(440, 160, 115, 30).fill()
.rect(440, 210, 115, 30).fill()
.fillColor('white')
.fontSize(11)
.text(order.client.username, 445, 165)
.text(order.service, 445, 215)
.fillColor('black')
.font('Helvetica-Bold')
.fontSize(16)
.text('TO', 40, 270)
.font('Helvetica')
.text(order.consignee, 40, 290)
.text(`${order.consigneeAddress1}, ${order.consigneeAddress2}, ${order.consigneeCity}, ${order.consigneeState}, ${order.consigneePincode}`, 40, 310, {width: 450, align:'left'})
.font('Helvetica-Bold')
.text(order.destination, 40, 370)
.font('Helvetica')
.text(`TEL NO: ${order.consigneeContactNumber}`, 40, 390)
.lineWidth(1.5)
.moveTo(40, 410)
.lineTo(560, 410).stroke()
.fontSize(14)
.text(`SHIPMENT DATE:`, 40, 430)
.text(moment(order.bookingDate).format(shortDateFormat), 160, 430)
.text(`SHIPMENT WEIGHT: ${order.chargeableWeight}`, 40, 450)
.text(`NO OF BOX: ${order.numberOfBoxes}`, 40, 470)
.text(`WAYBILL NO: ${order.awbNumber}`, 300, 450)
//.image(`box_${order.awbNumber}.png`, 265, 490, {width: 80, align:'center'})
.lineWidth(1.5)
.moveTo(40, 550)
.lineTo(560, 550).stroke()
.text('Office Purpose Only', 230, 570, {width: 150, align:'center'})
//.image(`box_${order.awbNumber}.png`, 265, 590, {width: 80, align:'center'})
.lineWidth(1.5)
.moveTo(40, 650)
.lineTo(560, 650).stroke()
.text(user.username, 230, 670, {width: 150, align:'center'})
}
009fd274aeae48f2bfbda6ef568676
Cloudstream Apk
Ruz
Ruz
Edward Sitarski
ebeecroft
dashan
34bcef38725b4e6eb5224ae028f17e
markatango
gouskova
Andrew J Montanus