私は簡単なDjango
アプリを持っています。これはNginx
の後ろにホストされています。私はweasyprint
を使ってPDFレポートを作成しています。 weasyprint
には、static
ファイルにアクセスするには、base_url
プロパティが必要です。Nginxプロキシの背後にあるDjangoのベースURL
下記のdjango
コードはローカルマシン(デベロッパーサーバー下)で正常に動作しますが、502 Bad Gateway Nginxの背後に公開するとエラーが発生します。
View.py
html = render_to_string('admin/enquiry/quoterequest/generate.html', {'enquiry': enquiry})
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'filename=\"Enquiry_{}.pdf'.format(enquiry.reference)
weasyprint.HTML(string=html,base_url=request.build_absolute_uri()).write_pdf(response, stylesheets=[
weasyprint.CSS(settings.STATICFILES_DIRS[0] + '/css/print.css')])
私はbase_url
属性を削除する場合は、上記のコードは、(画像を印刷せずに)正常に動作します。ご入力をお願い申し上げます - のいずれかのセットアップ方法nginx
またはこれはnginx
ログからのエラーメッセージである
@page {
size: letter;
margin: 1.5in .25in 1.9in .5in;
@top-center {
content: url("/uploads/header_footer/header.jpg");
height: 100%;
width: 100%;
}
@bottom-center {
background-image: url("/uploads/header_footer/footer.jpg");
background-repeat: no-repeat;
background-position: center;
content: "Page " counter(page);
height: 100%;
width: 100%;
vertical-align: bottom;;
}
}
print.css
nginxのコンフィグ
# configuration of the server
server {
listen 80;
server_name 192.168.33.10; # Vagrant IP
root /home/www/my_project;
charset utf-8;
client_max_body_size 75M; # max upload size
location /media {
alias /home/www/my_project/assets/uploads;
}
location /static {
alias /home/www/my_project/assets/static;
}
location/{
proxy_pass http://localhost:8001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
ジャンゴ
からbase_url
をretrive。 upstream prematurely closed connection while reading response header from upstream, client: 192.168.33.1, server: 192.168.33.10, request: "GET /enquiry/admin/enquiry/quoterequest/view/1/ HTTP/1.1", upstream: "http://127.0.0.1:8001/enquiry/admin/enquiry/quoterequest/view/1/", host: "192.168.33.10", referrer: "http://192.168.33.10/admin/enquiry/quoterequest/"