nginx - 文本显示为问号(html 错误页面)(nginx + elastic beanstalk)
问题描述
更新:
本地具有 html 页面代码的配置文件具有utf-8
编码。但是弹性beantalk实例上的文件单独具有us-ascii
编码,如40x.html和50x.html
我有 40x 和 50x 错误的自定义错误页面,定义如下:
files:
"/usr/share/nginx/html/40x.html" :
mode: "000755"
owner: nginx
group: nginx
content: |
<!DOCTYPE html>
<html>
<head>
<title>الموقع في حالة صيانة</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body { text-align: center; padding: 10%; font: 20px Helvetica, sans-serif; color: #333; }
h1 { font-size: 50px; margin: 0; }
article { display: block; text-align: right; max-width: 650px; margin: 0 auto; }
a { color: #dc8100; text-decoration: none; }
a:hover { color: #333; text-decoration: none; }
@media only screen and (max-width : 480px) {
h1 { font-size: 40px; }
}
</style>
</head>
<body>
<article dir="rtl">
<h1>لم نتمكن من العثور على تلك الصفحة.</h1>
<p>الصفحة التي تبحث عنها بعيدة عن متناولنا</p>
</article>
</body>
</html>
在customnginx中:
error_page 400 404 /40x.html;
location = /40x.html {
limit_req zone=nginx_main burst=20 nodelay;
limit_req_status 444;
charset utf-8;
source_charset utf-8;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
limit_req zone=nginx_main burst=20 nodelay;
limit_req_status 444;
charset utf-8;
source_charset utf-8;
}
如您所见,我同时设置charset utf-8;
了source_charset utf-8;
html 页面也有 UTF-8 字符集。
问题是目前,上面的阿拉伯字符显示为问号。
解决方案
您的文件中有 UTF-8 元标记 这是必要的,但还不够!您还需要:
1- 以 UTF-8 编码的文件
大多数文本编辑器(例如 Notepad++)允许您更改文件字符集,请确保您的文件以 UTF-8 编码。
2- HTTP 标头
在/etc/nginx/nginx.conf
你需要这个:
http {
charset utf-8;
}
正确传递内容。
推荐阅读
- c# - 如何在 WPF 中使用带有动态视图的选项卡控件创建动态选项卡
- spring - 优先考虑 SFTP 远程目录
- go - 如何在 go-micro 中设置 broker.SubscriberOptions
- python - 基于单元格内容的 Jupyter 笔记本中 matplotlib 内联图的行为
- node.js - 在nodejs中为mongo查询之外的变量赋值
- model - 根据 RFC3264 在 sip 中提供/应答模型
- python - 从模型动态创建表单
- google-cloud-platform - GCP外部IP地址范围
- java - 在 ClientRequestFilter 中动态设置 ClientRequestContext 属性
- c - 如何计算树形图的所有可能排列