更改Nginx官方映像的端口和文档根目录

这是我第一次接触nginx时的备忘录。
它只是在本地主机上执行简单的操作,输出“Hello, World!”。

首先,以默认状态启动容器,然后确认端口和文档根目录的设置是在哪里进行的。

如果在重新启动容器后自定义的设置得到了反映,那么修改设置后再重新启动即可。

nginx官方镜像

以默认状态启动容器。

组成

.
├── docker-compose.yaml
└── nginx
    └── html
        └── index.html

docker-compose.yamlを作成

version: '3'
services:
  web:
    image: nginx:1.20.2
    volumes:
      # コンテナはデフォルトのドキュメントルートを指定
      - ./nginx/html:/usr/share/nginx/html
    ports:
      # コンテナはデフォルトのポートを指定
      - "8080:80"

index.htmlを作成

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>index</title>
</head>
<body>
<p>Hello, World!</p>
</body>
</html>

启动容器

$ docker compose up -d

当访问 http://localhost:8080/ 的时候,浏览器会显示“Hello, World!”。

デフォルトの設定を確認

nginxの設定ファイルは/etc/nginx/nginx.confです。
コンテナ内で確認します。

% docker compose exec web cat /etc/nginx/nginx.conf

nginx.confからconf.d/のconfファイルがincludeされていることが分かります。

# 一部抜粋
include /etc/nginx/conf.d/*.conf;

请确认本次使用的镜像中,conf.d/目录下只有一个conf文件,默认为default.conf。请查阅内容。

$ docker compose exec web cat /etc/nginx/conf.d/default.conf

やはりdefault.confの設定がデフォルトとして反映されているようです。
listenディレクティブでポート、locationディレクティブでドキュメントルートが指定されています。

# コメント部分は削除
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

設定変更後にコンテナを起動する

更改端口和文档根目录的配置。
在主机上创建default.conf,并在容器启动时将其覆盖到容器内的default.conf,以应用配置。

构成

.
├── docker-compose.yaml
└── nginx
    ├── default.conf         # 追加 
    └── html
        ├── index.html
        └── test_index.html  # 追加

创建default.conf。

指定单独的端口和文档根目录。
由于目的是进行操作验证,因此设置仅包含最基本的内容。

server {
    # 10080番ポートを使用
    listen       10080;

    # パスに対応したドキュメントルートを設定
    location / {
        # ディレクトリ
        root   /usr/share/nginx/test_html;
        # トップページ
        index  test_index.html;
    }
}

创建一个test_index.html。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>test index</title>
</head>
<body>
<p>test Hello, World!</p>
</body>
</html>

更改docker-compose.yaml文件的设置

version: '3'
services:
  web:
    image: nginx:1.20.2
    volumes:
      # コンテナのdefault.confを上書き
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
      # コンテナのドキュメントルートを変更
      - ./nginx/html:/usr/share/nginx/test_html
    ports:
      # コンテナのポートを変更
      - "8080:10080"

重新启动容器

$ docker compose down
$ docker compose up -d

当访问localhost:8080时,在浏览器中会显示“测试 Hello, World!”。可以确认容器的default.conf文件也被主机的配置所覆盖。

$ docker compose exec web cat /etc/nginx/conf.d/default.conf

我只能提供一种中文的翻译版本:
虽然这只是基本的部分,但我已经了解到了将设置应用到系统中的机制。请参考。

请使用公关

我们正在招募与我们一起工作的伙伴。
如果你想让所有的宅男宅女幸福,务必看一下!

广告
将在 10 秒后关闭
bannerAds