4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NginxサーバのインストールとHTTPS対応まで

Last updated at Posted at 2023-01-12

船井総研デジタルのよもぎたです。

この記事では、AzureでUbuntu仮想マシンをデプロイする(Webサーバ用途)でデプロイした仮想マシンにApacheをインストールしてLet’s EncryptでHTTPSに対応させるところまでご紹介したいと思います。

なお、Let’s EncryptでHTTPSに対応させるには、ドメイン名が必要で、そのドメイン名が仮想マシンのグローバルIPアドレスに名前解決されるよう設定されていることが必要です。
ドメイン名の取得と設定は、お好みのレジストラで行ってください。

ApacheのインストールとHTTPS対応はこちらの記事をご覧ください。

Nginxのインストール

インストールするパッケージはnginxです。

$ apt show nginx 2>/dev/null
Package: nginx
Version: 1.18.0-6ubuntu14.3
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Nginx Maintainers <pkg-nginx-maintainers@alioth-lists.debian.net>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 50.2 kB
Depends: nginx-core (<< 1.18.0-6ubuntu14.3.1~) | nginx-full (<< 1.18.0-6ubuntu14.3.1~) | nginx-light (<< 1.18.0-6ubuntu14.3.1~) | nginx-extras (<< 1.18.0-6ubuntu14.3.1~), nginx-core (>= 1.18.0-6ubuntu14.3) | nginx-full (>= 1.18.0-6ubuntu14.3) | nginx-light (>= 1.18.0-6ubuntu14.3) | nginx-extras (>= 1.18.0-6ubuntu14.3)
Breaks: libnginx-mod-http-lua (<< 1.18.0-6ubuntu5)
Homepage: https://nginx.net
Download-Size: 3882 B
APT-Manual-Installed: yes
APT-Sources: http://azure.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
Description: small, powerful, scalable web/proxy server
 Nginx ("engine X") is a high-performance web and reverse proxy server
 created by Igor Sysoev. It can be used both as a standalone web server
 and as a proxy to reduce the load on back-end HTTP or mail servers.
 .
 This is a dependency package to install either nginx-core (by default),
 nginx-full, nginx-light or nginx-extras.

早速インストールします。

$ sudo apt install -y nginx

インストールすると、TCP80番ポートをNginxがListenしていることが分かります。

$ sudo ss -tlnp | grep :80
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=2783,fd=6),("nginx",pid=2780,fd=6))
LISTEN 0      511             [::]:80           [::]:*    users:(("nginx",pid=2783,fd=7),("nginx",pid=2780,fd=7))
$ curl http://127.0.0.1/ 2>/dev/null | grep title
<title>Welcome to nginx!</title>

手元のPCのWebブラウザからアクセスしても、Nginxのデフォルトのページが表示されます。
スクリーンショット 2023-01-09 173810.png

HTTPSに対応させる

Let’s EncryptによるHTTPS対応のため、まずはnginxのサーバー名を設定して、Nginxのリロードをします。

$ grep server_name /etc/nginx/sites-available/default | grep -v '#'
        server_name www.example.com;
$ sudo systemctl reload nginx

つづいてcertbotをインストールします。

$ sudo apt install -y certbot python3-certbot-nginx

インストールしたcertbotで証明書を取得します。途中でいくつか質問に答える必要があります。

$ sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): username@exmaple.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y or N

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
---snip---

ここでNginxがListenしているポートを確認すると、すでにTCP443番もListenしていることが確認できます。

$ sudo ss -tlnp | grep nginx
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=3483,fd=6),("nginx",pid=2780,fd=6))
LISTEN 0      511          0.0.0.0:443       0.0.0.0:*    users:(("nginx",pid=3483,fd=12),("nginx",pid=2780,fd=12))
LISTEN 0      511             [::]:80           [::]:*    users:(("nginx",pid=3483,fd=7),("nginx",pid=2780,fd=7))
LISTEN 0      511             [::]:443          [::]:*    users:(("nginx",pid=3483,fd=11),("nginx",pid=2780,fd=11))

手元のPCのWebブラウザからHTTPSでアクセスしても、証明書エラーなど起きずにアクセスできます。
スクリーンショット 2023-01-09 175827.png

証明書の自動更新の設定

証明書の有効期限は3か月です。
スクリーンショット 2023-01-09 180300.png

そこで、2か月ごと、奇数月の毎月1日午前7時に証明書を更新してNginxの設定を再読み込みするように設定します。

具体的には、cronに以下のように仕込みます。

0 7 1,3,5,7,9,11 * root /usr/bin/certbot renew --webroot-path /var/www/html/ --post-hook "/usr/bin/systemctl reload nginx" > /root/certbot-renew.execlog 2>&1

certbotの更新のテストは、次のようにして行えます。

$ sudo certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for tsyk.net

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/example.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

なお、Nginxのコンテンツは/var/www/htmlに置かれています。

UbuntuにNginxをインストールしてLet’s EncryptでHTTPSに対応させるところまでご紹介しました。

AzureでUbuntu仮想マシンをデプロイする記事UbuntuにApacheをインストールしてHTTPSに対応させる記事もよろしくお願いします。

最後までお読みいただきありがとうございました。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?