Docker容器下运行Nginx并实现反向代理

下面是“Docker容器下运行Nginx并实现反向代理”的完整攻略。

一、准备工作

在开始之前,我们需要先安装Docker和Nginx。

  • Docker的安装可以参考官方文档:https://docs.docker.com/engine/install/
  • Nginx的安装可以参考官方文档:http://nginx.org/en/docs/install.html

二、启动Docker容器

使用以下命令启动Docker容器:

docker run -d --name nginx-proxy -p 80:80 nginx
  • -d 表示在后台运行容器。
  • --name nginx-proxy 表示为容器命名为nginx-proxy。
  • -p 80:80 表示将本地主机的80端口映射到容器的80端口。
  • nginx 表示要使用的镜像名称,这里使用的是官方的Nginx镜像。如果本地没有该镜像,将会自动从Docker Hub上下载。

启动后可以使用以下命令查看容器是否启动成功:

docker ps

如果出现类似以下输出,则启动成功:

CONTAINER ID   IMAGE   COMMAND                  CREATED          STATUS         PORTS                                   NAMES
f70e9f257a61   nginx   "/docker-entrypoint.…"   19 seconds ago   Up 18 seconds  0.0.0.0:80->80/tcp, :::80->80/tcp   nginx-proxy

三、配置Nginx反向代理

进入Docker容器:

docker exec -it nginx-proxy /bin/bash

进入Nginx配置目录:

cd /etc/nginx/conf.d/

创建一个新的Nginx配置文件:

vi proxy.conf

将以下内容复制到文件中:

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://your-web-server-address:your-web-server-port;
        proxy_set_header Host $host;
    }
}
  • listen 指定监听的端口。
  • server_name 指定Nginx代理的服务器名称。
  • proxy_pass 指定反向代理的服务器地址和端口。
  • proxy_set_header 设置反向代理请求头的Host字段。

http://your-web-server-address:your-web-server-port 替换成你要反向代理的服务器的地址和端口。

保存配置文件并退出vi编辑器。

示例1:反向代理一个静态页面

假设你想要将 http://your-web-server-address/index.html 反向代理到Nginx容器中。

将以下内容复制到 index.html 文件中:

<!DOCTYPE html>
<html>
<head>
    <title>My Static Page</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

在本地文件系统上创建一个名为 web 的目录,并将 index.html 文件复制到 web 目录中。

使用以下命令将 web 目录挂载到Nginx容器中:

docker run -d --name nginx-proxy -p 80:80 -v $(pwd)/web:/usr/share/nginx/html:ro nginx
  • -v $(pwd)/web:/usr/share/nginx/html:ro 表示将本地的 ./web 目录挂载到Docker容器中的 /usr/share/nginx/html 目录,ro表示只读。

现在你可以通过以下地址访问静态页面了:

http://localhost/index.html

如果看到了“Hello, World!”的字样,说明反向代理成功。

示例2:反向代理一个Web服务

假设你安装了一个Web服务,并且Web服务运行在 http://your-web-server-address:your-web-server-port

将前面创建的 proxy.conf 配置文件中的 http://your-web-server-address:your-web-server-port 替换成 http://your-web-server-address:your-web-server-port/your-web-app-path/,其中 your-web-app-path 表示Web应用程序的路径。

保存并退出 proxy.conf 配置文件。

使用以下命令重启Nginx容器:

docker restart nginx-proxy

现在你可以通过以下地址访问Web服务了:

http://localhost/your-web-app-path/

如果看到了Web服务的页面,说明反向代理成功。

四、总结

通过Docker容器下运行Nginx并实现反向代理,我们可以将多个Web服务映射到Nginx容器的不同路径上,从而简化管理和维护。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker容器下运行Nginx并实现反向代理 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Linux下nginx部署

    启动多个,请看:在linux系统下安装两个nginx以及启动 查看nginx包路径:http://nginx.org/download/,两种下载方式: ①在官网下载使用Xftp上传到linux上 ②在版本上选好,直接命令下载,如下:(下载nginx-1.20.1.tar.gz版本)建议到home目录执行该命令,方便找到 wget http://nginx.…

    Nginx 2023年4月10日
    00
  • 修改nginx站点根目录总结经验(小结)

    下面是针对“修改nginx站点根目录总结经验(小结)”这篇文章的详细攻略。 一、背景 在使用Nginx搭建站点的过程中,有时候需要更改站点的根目录,以适应不同的需求。修改Nginx站点根目录的方法有多种,这篇文章将总结其中比较常见的两种方法,分别为在配置文件中修改根目录和使用变量的方式修改根目录。 二、方法一:在配置文件中修改根目录 1.找到Nginx的配置…

    Nginx 2023年5月16日
    00
  • nginx的location与proxy_pass配置超详细讲解及其有无斜杠( / )结尾的区别

    本文所使用的环境信息如下: windows11 (主机系统) virtual-box-7.0环境下的ubuntu-18.04 nginx-1.22.1 (linux) 斜杠结尾之争 实践中,nginx里最常用的指令就是location和proxy_pass了。前者用于为不同请求uri指定不同nginx配置,后者用于匹配的location进行转发(通常是动态内…

    2023年4月10日
    00
  • Ubuntu +PHP-fpm + Nginx 访问php界面空白的界面的分析

      系统环境: cat /etc/issue Ubuntu 14.04.5 LTS \n \l   linux 内核: root@xxxx:~# uname -a Linux iZwz9gx93mlg0b8kzke0b9Z 4.4.0-81-generic #104~14.04.1-Ubuntu SMP Wed Jun 14 12:45:52 UTC 201…

    Nginx 2023年4月10日
    00
  • nginx注册为服务

    #!/bin/sh # # nginx – this script starts and stops the nginx daemon # # chkconfig: – 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy …

    Nginx 2023年4月11日
    00
  • nginx使用总结一

    在mac os 10.11.6下配置Nginx 打开命令终端找到安装路径: cd /usr/local/etc/nginx/ 然后vi 打开nginx.conf文件配置:在最后行加上  include servers/*; #user nobody; worker_processes 1; #error_log logs/error.log; #error_…

    Nginx 2023年4月10日
    00
  • nginx展示目录及美化

    1.下载nginx 2.下载fancyindex git clone https://github.com/aperezdc/ngx-fancyindex.git ngx-fancyindex 3.下载主题 git clone https://github.com/lanffy/Nginx-Fancyindex-Theme.git 编译安装 ./config…

    Nginx 2023年4月13日
    00
  • 通过Nginx解决网络隔离实践记录详解

    下面是对该主题完整攻略的解释。 什么是网络隔离? 网络隔离是一种通过隔离不同的网络群体,以确保它们之间没有共享网络资源或追踪的方式来增强网络安全的方法。网络隔离的一项关键功能是防止外部网络攻击,保护内部网络不受威胁。 如何通过Nginx解决网络隔离? 使用Nginx可以通过在服务器上设置虚拟主机,并禁用一些模块,从而实现网络隔离。以下是如何在Ubuntu服务…

    Nginx 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部