为 Docker 创建的 Nginx 容器配置二级域名
HDUZN

Docker中用 Nginx 镜像可以创建多个网站。

假设用Nginx镜像创建了容器1:

用Nginx镜像创建了容器2:

  • 容器名称:ai_html_index
  • 访问地址:http://ip:9080(或者 http://域名:9080 )
  • 网站目录:nginx-index(内含index.html)

那容器1可以通过域名直接访问,想把容器2的访问设置一个二级域名的操作步骤如下。

准备工作

1.ip和域名
假设我的ip为:110.22.33.44,域名为:abc.com,当然已经设置好了域名解析。

想要添加的二级域名为:ai.abc.com

2.容器1的配置文件nginx.conf
准备好文件以及容器1的配置文件nginx.conf,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

server {
listen 80;
server_name abc.com www.abc.com;
root /usr/share/nginx/html;
index index.html;

location / {
try_files $uri $uri/ /index.html;
}
}

3.创建容器1和容器2

1
2
3
4
5
# 创建容器1 nginx
docker run -d -p 80:80 --name nginx -v /home/ubuntu/nginx-config/nginx.conf:/etc/nginx/nginx.conf:ro -v /home/ubuntu/nginx-config/html:/usr/share/nginx/html:ro nginx

# 创建容器2 ai_html_index
docker run -d --restart always -p 9080:80 -v /home/ubuntu/nginx-index/:/usr/share/nginx/html --name ai_html_index nginx

操作步骤

1.域名解析添加A记录

首先,需要在域名解析服务商处添加一个A记录,将 ai.abc.com 指向 110.22.33.44。这样访问ai.abc.com 时,DNS解析会将其解析为110.22.33.44。

2.修改 nginx.conf 配置文件

需要在容器1的 nginx的配置文件中添加一个新的server块,用于处理 ai.abc.com 的请求。nginx.conf 文件修改后的内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

server {
listen 80;
server_name abc.com www.abc.com;
root /usr/share/nginx/html;
index index.html;

location / {
try_files $uri $uri/ /index.html;
}
}
# ai
server {
listen 80;
server_name ai.abc.com;

location / {
proxy_pass http://110.22.33.44:9080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}

修改好后,直接重启一下容器1:docker restart nginx,就可以用二级域名 ai.abc.com 访问容器2的网站了。

proxy_set_header

在nginx的反向代理配置中,proxy_set_header指令用于设置HTTP请求头。具体来说:

  1. proxy_set_header Host $host;:该指令将设置代理请求的Host头字段为客户端请求的Host头字段。这是为了确保后端服务器能够正确处理请求,并根据请求的域名进行相应的处理。

  2. proxy_set_header X-Real-IP $remote_addr;:该指令将设置代理请求的X-Real-IP头字段为客户端的真实IP地址。这是为了将客户端的真实IP地址传递给后端服务器,以便后端服务器能够获取到客户端的真实IP地址。

这两个指令在反向代理配置中是常见的设置,可以确保后端服务器能够正确处理请求,并获取到客户端的真实IP地址。在你的配置中,这两个指令用于将客户端请求的Host头字段和真实IP地址传递给第二个容器。

  • 本文标题:为 Docker 创建的 Nginx 容器配置二级域名
  • 本文作者:HDUZN
  • 创建时间:2023-07-02 23:12:49
  • 本文链接:http://hduzn.cn/2023/07/02/为Docker创建的Nginx容器配置二级域名/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论