更改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
我只能提供一种中文的翻译版本:
虽然这只是基本的部分,但我已经了解到了将设置应用到系统中的机制。请参考。
请使用公关
我们正在招募与我们一起工作的伙伴。
如果你想让所有的宅男宅女幸福,务必看一下!
 
    