使用Nginx反向代理可以通过不同的子域名访问不同服务器端口
下面来介绍怎么在Docker器中使用Nginx反向代理

一、在docker使用Nginx反向代理

1.安装Docker

确保你的系统上已经安装了Docker。具体可以Docker官方网站上找到适合你系统安装指南

2.创建一个新的Docker容器

首先,创建一个新的Docker容器运行Nginx。你可以使用以下命令创建一个新的容器

docker run --name nginx-proxy -p 80:80 -d nginx

这将创建一个名为nginx-proxy容器,并将容器的80端口映射主机的80端口上。

3.配置Nginx反向代理

现在,你需要修改Nginx配置文件设置反向代理规则使用以下命令进入Nginx容器的Shell:

docker exec -it nginx-proxy bash

在容器中,你可以编辑Nginx的配置文件默认情况下,Nginx的配置文件路径/etc/nginx/nginx.conf

vi /etc/nginx/nginx.conf

配置文件中,你可以添加反向代理规则,将不同的子域名指向不同服务器端口。以下是一个示例配置,将toyong.tk代理http://172.16.41.133:8008,将doman2.toyong.tk代理到http://172.16.41.133:9000

events {
    # worker_connections  1024;  ## Default: 1024
}
http {
    server {
        listen 80;
        server_name toyong.tk;

        location / {
            proxy_pass http://172.16.41.133:8008;
        }
    }
    
    server {
        listen 80;
        server_name doman2.toyong.tk;
    
        location / {
            proxy_pass http://172.16.41.133:9000;
        }
    }

}

保存退出配置文件

4.重新加载Nginx配置

在Nginx容器中,使用以下命令重新加载配置

nginx -s reload
5.配置DNS解析

最后,将你的子域名指向运行Nginx容器的主机的IP地址。你可以在你的DNS服务提供商的管理界面中进行配置。
toyong.tkdoman2.toyong.tk解析到你运行Nginx容器的主机的IP地址上。
在这里插入图片描述

当配置完成后,当你通过浏览器访问toyong.tk时,请求将被Nginx反向代理到http://172.16.41.133:8008 。当你访问doman2.toyong.tk时,请求将被代理到http://172.16.41.133:9000如下所示
在这里插入图片描述
在这里插入图片描述

二、配置使用HTTPS协议

当然我们还可以配置使用HTTPS协议,可以按照以下步骤修改Nginx的配置来支持HTTPS

1.获取SSL证书

首先,你需要获取有效的SSL证书。你可以购买SSL证书,或者使用免费的证书颁发机构(如阿里云,腾讯云)来获取证书。

2.将证书和密钥文件复制到Nginx容器

将你的SSL证书和私钥文件复制运行Nginx容器的主机上。你可以将它们复制任意位置例如/etc/nginx/certs/toyong.tk.pem/etc/nginx/certs/toyong.tk.key

3.修改Nginx配置

进入Nginx容器的Shell,编辑Nginx的配置文件

docker exec -it nginx-proxy bash
vi /etc/nginx/nginx.conf

修改配置文件,将HTTP的80端口重定向到HTTPS的443端口,并添加刚才复制的SSL证书和私钥的路径。以下是一个示例配置:

events {
    # worker_connections  1024;  ## Default: 1024
}
http {
    server {
        listen 80;
        server_name toyong.tk;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl;
        server_name toyong.tk;
        ssl_certificate /etc/nginx/certs/toyong.tk.pem;
        ssl_certificate_key /etc/nginx/certs/toyong.tk.key;
        location / {
          proxy_pass http://172.16.41.133:8008;
        }

  	}
    server {
        listen 80;
        server_name doman2.toyong.tk;
    
        location / {
            proxy_pass http://172.16.41.133:9000;
        }
    }

}


4.保存退出配置文件

重新加载Nginx配置:在Nginx容器中,使用以下命令重新加载配置:

nginx -s reload

现在,当你通过浏览器访问https://toyong.tk时,请求将通过HTTPS协议传输,并被Nginx反向代理到http://http://172.16.41.133:8000。你可以根据需要为其他子域名和代理规则重复这些步骤。请确保将相应的SSL证书和私钥文件路径正确设置在Nginx的配置中。
在这里插入图片描述

三、使用docker-compose管理 Nginx 反向代理

如果你觉得进入容器中操作很繁琐,那我推荐你使用docker-compose方式来管理 Nginx 反向代理和 HTTPS 配置。

1.创建docker-compose.yml 文件

首先在项目目录创建一个名为 docker-compose.yml文件,并将以下内容添加到文件中:

version: '3'
services:
  nginx-proxy:
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./certs:/etc/nginx/certs

这个配置使用了官方的 Nginx 镜像,并将容器的 80 端口映射主机的 80 端口,同时将容器的 443 端口映射主机的 443 端口

2.创建nginx.conf文件和certs目录

接下来,在docker-compose.yml的同级别目录创建一个名为 nginx.conf 的文件,并将以下内容添加到文件中:

events {
    # worker_connections  1024;  ## Default: 1024
}
http {
    server {
        listen 80;
        server_name toyong.tk;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name toyong.tk;
        ssl_certificate /etc/nginx/certs/toyong.tk.pem;
        ssl_certificate_key /etc/nginx/certs/toyong.tk.key;
        location / {
          proxy_pass http://172.16.41.133:8008;
        }
  	}

    server {
        listen 80;
        server_name doman2.toyong.tk;
        location / {
            proxy_pass http://172.16.41.133:9000;
        }
    }
}

这个配置中,我们定义了 HTTP 的 80 端口的重定向规则,并为 HTTPS 的 443 端口指定了 SSL 证书和私钥的路径。并将 SSL 证书和私钥文件命名toyong.tk.pem toyong.tk.key,并将它们放置在与 docker-compose.yml 文件相同的目录下的 certs 目录中。

3.启动容器

最后通过运行以下命令启动 Nginx 反向代理容器:

docker-compose up -d

原文地址:https://blog.csdn.net/weixin_45225492/article/details/130952275

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_33390.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注