在docker中使用Nginx并实现反向代理

这篇具有很好参考价值的文章主要介绍了在docker中使用Nginx并实现反向代理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用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地址上。
docker使用nginx,nginx,docker,运维

当配置完成后,当你通过浏览器访问toyong.tk时,请求将被Nginx反向代理到http://172.16.41.133:8008 。当你访问doman2.toyong.tk时,请求将被代理到http://172.16.41.133:9000。如下图所示。
docker使用nginx,nginx,docker,运维
docker使用nginx,nginx,docker,运维

二、配置使用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使用nginx,nginx,docker,运维

三、使用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 反向代理容器:文章来源地址https://www.toymoban.com/news/detail-599086.html

docker-compose up -d

到了这里,关于在docker中使用Nginx并实现反向代理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 编译安装Nginx和使用五种算法实现Nginx反向代理负载均衡

    目录 Ubuntu中安装Nginx 概念介绍 负载均衡 几种负载均衡算法 反向代理 环境规划 配置反向代理 加权负载均衡(Weighted Load Balancing) 轮询(Round Robin) IP 哈希(IP Hash) 最少连接(Least Connections) URL 哈希(URL Hash) 想要安装nginx,首先我们需要有一台Ubuntu的虚拟机,然后最好在

    2024年01月25日
    浏览(53)
  • 实战指南:使用 Nginx 反向代理实现多端口跳转

    在现代 Web 开发中,Nginx作为一款高性能的开源反向代理服务器,提供了强大的功能来管理网络流量和路由。本文将介绍如何利用 Nginx 的反向代理功能,将不同路径的请求转发到不同端口的 Tomcat 服务上,以实现多端口跳转的效果。 使用 Nginx 的强大反向代理功能,我们能够根

    2024年02月19日
    浏览(50)
  • Docker Nginx 反向代理

    最近在系统性梳理网关的知识,其中网关的的功能有一个是代理,正好咱们常用的Nginx也具备次功能,今天正好使用Nginx实现一下反向代理,与后面网关的代理做一个对比,因为我使用的docker安装的Nginx,与直接部署Nginx不太一样正好记录下遇到的问题,希望可以帮助到学习的

    2023年04月08日
    浏览(44)
  • 【nginx实战】nginx正向代理、反向代理、由反向代理实现的负载均衡、故障转移详解

    本文将要讨论以下内容 正向代理与反向代理的基本概念 Nginx正向代理服务的配置指令、Nginx反向代理服务的配置指令 Nginx反向代理服务器的应用——负载均衡、故障转移 案例分析   正向代理的概念 局域网内的机器借助代理服务访问局域网外的网站,此代理服务器提供的服务

    2024年01月24日
    浏览(52)
  • 【Nginx三】——Nginx实现反向代理

    【Nginx一】——Nginx介绍(正向代理 反向代理 负载均衡 动静分离) 【Nginx二】——Nginx常用命令 配置文件 Nginx如何处理请求 本篇博客主要介绍Nginx如何实现反向代理,会进行介绍什么是反向代理,以及进行实例实现反向代理。 代理服务器来接收网络上请求,然后将请求转发

    2024年02月05日
    浏览(65)
  • 基于Docker MinIO整合Nginx搭建反向代理

    docker拉去镜像安装和配置就不说了 主要说一下配置反向代理 第一次使用minio我陷入了一个误区,将nginx的data目录挂载到了minio的文件目录,这样是可以通过nginx访问minio文件,但是没有任何意义,也没有做任何的代理设置,研究了很久最后把nginx容器停了重新run一个,然后配置

    2024年02月09日
    浏览(41)
  • lua使用resty.http做nginx反向代理(https请求,docker容器化部署集群),一个域名多项目转发

    下载使用 链接:https://pan.baidu.com/s/1uQ7yCzQsPWsF6xavFTpbZg 提取码:htay –来自百度网盘超级会员V5的分享 ad_load.lua文件

    2024年01月18日
    浏览(66)
  • 【玩转Docker】【02】反向代理神器 — Nginx Proxy Manager

    一、安装 Nginx Proxy Manager 1、创建安装目录 2、这里直接用 docker 的方式安装 英文输入法下,按 “i” 按一下 esc键,然后 “:wq” 保存退出。 二、打开服务器防火墙并访问网页(非必需) 1、打开防火墙的端口 81 (添加规则:端口 81 ,备注nginxproxymanager) 2、查看端口是否被占

    2024年02月09日
    浏览(34)
  • 反向代理神器 Nginx Proxy Manager 群晖Docker部署

    本文将使用 NginxProxyManager 中文版 介绍NginxProxyManager基于群晖Docke的部署方法,并且所有操作均在群晖网页端完成,不需要命令行操作,非常适合新手。 GitHub:xiaoxinpro/nginx-proxy-manager-zh Docker:chishin/nginx-proxy-manager-zh CSDN:NginxProxyManager 中文版简介 1. 下载映像 登录群晖后台并打

    2024年02月04日
    浏览(56)
  • Nginx(一)介绍Nginx、正向代理和实现反向代理的两个实例

    中国Nginx官网:https://www.nginx-cn.net/ GitHub地址:https://github.com/nginxinc/ 客户端想访问tomcat服务器,只需要访问ww.baidu.com。对真实的服务器IP是隐藏的 1、反向代理实例一(反向代理,访问www.123.com) 步骤一:修改主机映射“C:WindowsSystem32driversetchosts” 步骤二:修改Nginx中的配

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包