【Azure 应用服务】App Service For Container 配置Nginx,设置/home/site/wwwroot/目录为启动目录,并配置反向代理

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【Azure 应用服务】App Service For Container 配置Nginx,设置/home/site/wwwroot/目录为启动目录,并配置反向代理

问题描述

通过Docker Desktop for Linux,配置Nginx镜像后,自定义nginx.conf文件,修改启动目录和对 /out 路径的反向代理到博客园的博文地址 (https://www.cnblogs.com/lulight/p/15180884.html), 然后部署到Azure App Service中的整体实现方案。

 

操作步骤(共5步)

第 0 步:启动本地 Docker Desktop,并拉取Nginx 镜像

# 1. pull nginx image ... need docker for linux

docker pull nignx

注意:必须切换为 Linux Container,避免在拉去 Nginx 镜像时候出现如下错误:

C:\Users\bu>docker pull nginx

Using default tag: latest

latest: Pulling from library/nginx

no matching manifest for windows/amd64 10.0.19043 in the manifest list entries

 

第一步:创建Dockerfile 文件

FROM nginx

COPY appnginx.html  /home/site/wwwroot/index.html

COPY . /home/site/wwwroot

COPY nginx.conf /etc/nginx/nginx.conf

RUN  .

注意:

  • 这里Dockerfile的名字必须为Dockerfile
  • 第一行 FROM nginx 表示这次构建的image是以nginx的镜像为基础
  • 第二行 表示把本地目录中的一个appnginx.html静态文件复制到 /home/site/wwwroot/下的index.html文件中
  • 第三行 表示把本地当前与Dockerfile同级目录中的所有内容都复制到 /home/site/wwwroot 中
  • 第四行 表示把自定义的nginx.conf文件复制到linux下的nginx的安装目录中 /etc/nginx/nginx.conf,代替默认的nginx.conf

 

第二步:定义nginx.conf文件,其中包含修改启动路径,配置方向代理路径

worker_processes 1;
events{
    worker_connections 1024;
}
http{
    include mime.types;
    default_type application/cotet-stream;
    sendfile on;
    keepalive_timeout 65;
    server {
        listen   80 default;
        server_name  localhost;
        access_log  /var/log/nginx/localhost.access.log;
        location / {
                root   /home/site/wwwroot/;
                index  index.html index.htm;
        }
        location /out {
            proxy_pass https://www.cnblogs.com/lulight/p/15180884.html;
        }
    } 
    
}

注意:

  • 在Server节点中,配置了两种路径处理,当访问的是 / 根目录时,路径修改为  /home/site/wwwroot/, 默认的启动页面时 index.html 或者时 index.htm
  • 当请求路径时 localhost:80/out 时,反向代理请求发送到博客园博文地址  https://www.cnblogs.com/lulight/p/15180884.html

 

第三步:创建镜像后,Push到ACR中

使用az指令来创建ACR并通过docker登录到ACR中,然后push mynginx镜像到ACR中,为第四步准备。全文参考文档:https://docs.microsoft.com/zh-cn/azure/app-service/tutorial-custom-container?pivots=container-linux#create-a-resource-group

# 1. pull nginx image ... need docker for linux
docker pull nignx
# 2. build image 
docker build -t mynginx:latest .
# 3. run images 
docker run --name mynginxtest3 -p 8081:80 mynginx:v4
# 4. Push to ACR 
az cloud set --name AzureChinaCloud
az login
# az group create 命令创建资源组
az group create --name appacr-rg --location chinanorth2
# az acr create 命令创建 Azure 容器注册表
az acr create --name lbacr01 --resource-group appacr-rg --sku Basic --admin-enabled true
# az acr show 命令以检索注册表的凭据
az acr credential show --resource-group appacr-rg --name lbacr01
# docker login 命令登录到容器注册表
docker login lbacr01.azurecr.cn --username lbacr01
# 为ACR 标记本地 Docker 映像
docker tag mynginx lbacr01.azurecr.cn/mynginx:latest
# docker push 命令将映像推送到为ACR
docker push lbacr01.azurecr.cn/mynginx:latest
#az acr repository list 命令验证推送是否成功
az acr repository list -n lbacr01
# 5. 创建 app service  门户或者是CLI指令

注意:

  • 以上指令中 lbacr01 为测试demo中的ACR名称,实际需要根据情况修改

上传成功后结果为:

 

第四步:Azure门户中创建App Service,选择Docker并从ACR中获取镜像

注意:整个操作根据Azure门户提示一步一步进行。 https://portal.azure.cn/#create/Microsoft.WebSite, 如要使用AZ命令,则同样参考第三步链接(将应用服务配置为从注册表部署映像:https://docs.microsoft.com/zh-cn/azure/app-service/tutorial-custom-container?pivots=container-linux#configure-app-service-to-deploy-the-image-from-the-registry)

 

第五步:验证App Service的访问及反向代理结果

 

 

 

附录:方案中的静态页面内容

appnginx.html

<html>
    <body>
        <h1>Hello docker + nginx from china azure app service /home/site/wwwroot/ !</h1>
        <h2>Hello docker + nginx  from china azure app service /home/site/wwwroot/ !</h2>
        <h3>Hello docker + nginx   from china azure app service /home/site/wwwroot/ !</h3>
        <h4>Hello docker + nginx    from china azure app service /home/site/wwwroot/ !</h4>
        <h5>Hello docker + nginx     from china azure app service /home/site/wwwroot/ !</h5>
        <h6>Hello docker  + nginx     from china azure app service /home/site/wwwroot/ !</h6>
    </body>
</html>

 

update.html

<html>
    <body>
        <h1>update page ....... !</h1>
         
        <h5>China azure app service /home/site/wwwroot/ !</h5>
    </body>
</html>

 

 

参考资料

nginx反向代理配置两个不同服务器https://www.cnblogs.com/momjs/p/10615088.html

使用自定义容器将自定义软件迁移到 Azure 应用服务: https://docs.microsoft.com/zh-cn/azure/app-service/tutorial-custom-container?pivots=container-linux

 

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
25天前
|
JavaScript Java 应用服务中间件
|
8天前
|
JavaScript 应用服务中间件 开发工具
vue尚品汇商城项目-day07【53.nginx反向代理配置】
vue尚品汇商城项目-day07【53.nginx反向代理配置】
20 4
|
29天前
【Azure Logic App】使用Event Hub 连接器配置 Active Directory OAuth 认证无法成功连接到中国区Event Hub的解决之法
An exception occurred while retrieving properties for Event Hub: logicapp. Error Message: 'ClientSecretCredential authentication failed: AADSTS90002: Tenant 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' not found. Check to make sure you have the correct tenant ID and are signing into the correct cloud. Che
|
1月前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
2月前
【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?
【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?
|
应用服务中间件 PHP nginx
nginx 和php设置上传大小及可以提交的内容限制
1. 以下代码加入 /etc/nginx/nginx.conf 文件中的 http{ ... } 块中 client_max_body_size 8M; 2. PHP 设置上传大小 打开 /etc/php5/fpm/php.
1045 0
|
19天前
|
缓存 前端开发 JavaScript
终极 Nginx 配置指南(全网最详细)
本文详细介绍了Nginx配置文件`nginx.conf`的基本结构及其优化方法。首先通过删除注释简化了原始配置,使其更易理解。接着,文章将`nginx.conf`分为全局块、events块和http块三部分进行详细解析,帮助读者更好地掌握其功能与配置。此外,还介绍了如何通过简单修改实现网站上线,并提供了Nginx的优化技巧,包括解决前端History模式下的404问题、配置反向代理、开启gzip压缩、设置维护页面、在同一IP上部署多个网站以及实现动静分离等。最后,附上了Nginx的基础命令,如安装、启动、重启和关闭等操作,方便读者实践应用。
217 84
终极 Nginx 配置指南(全网最详细)
|
8天前
|
缓存 应用服务中间件 nginx
nginx如何配置?配置项都是什么意思?
nginx如何配置?配置项都是什么意思?
24 1
|
11天前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
2月前
|
应用服务中间件 nginx Docker
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
这篇文章介绍了如何通过域名在本地访问虚拟机上的nginx服务,包括创建nginx容器、修改配置文件、修改本地host文件以及进行访问测试的详细步骤。文章提供了具体的Docker命令来创建并配置nginx容器,展示了配置文件的修改示例,说明了如何在本地系统的hosts文件中添加虚拟机IP和自定义域名,以及如何通过浏览器进行测试访问。
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)