Help us understand the problem. What is going on with this article?

cert-bot/letsencrypt nginx `UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 12: ordinal not in range(128)`

More than 1 year has passed since last update.

環境

  • Amazon Linux AMI
  • nginx

事象

cert-botで証明書作ろうとしたところ下記のエラーが。

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 12: ordinal not in range(128)

原因

日本に生まれてしまったこと。

(nginxのconfファイルに日本語がコメントで書かれていた。)

対策

nginxのconfファイルの日本語を削除or英語にする。

ちなみに、nginxのconfファイルの場所は基本的に、/etc/nginx/conf.d/ 配下にある。

詳細

cert-bot内のpythonスクリプトに文字コードの宣言が書かれていないため、デフォルトのanciiで読み込まれていて、UTF-8の日本語文字列の読み込みでエラーになる。
問題のファイルはこいつ(他にもあるかも...?)。
https://github.com/certbot/certbot/blob/master/certbot-nginx/certbot_nginx/nginxparser.py

本来はこいつに

# coding: utf-8

これを追加すればいいだけなのだけど、そもそもnginxのconfigurationファイルにUTF-8で書いてるのが正しいのかどうかわからない。
テストは通るし、日本語を含むURLからのリダイレクト設定するときとかはUTF-8で保存しないと動かないからUTF-8で書くのが正しいとは思っている。(Hex表記でもいい。)
https://github.com/nginx/nginx/blob/master/src/core/ngx_string.c
この辺かな。
気が向いたらちゃんと読み込んでプルリクおくりたい。
気が向いた人ちゃんと読み込んでプルリク送ってください。

txmy
仕事では主にコンタクトセンター向けのAIを、研究ではデータ駆動科学手法の研究とかをやってます。数学、競プロ、香、茶、中華が好きです。東大新領域D2。カラクリ株式会社CTO。第2,4土曜日に六本木のハッカーズバーで機械学習の日を担当してます。
http://www.txmy.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away