【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
【Azure 应用服务】App Service For Container 配置Nginx,设置/home/site/wwwroot/目录为启动目录,并配置反向代理的更多相关文章
- 【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
问题情形 当应用在Azure 应用服务App Service中运行时,有时候出现CPU,Memory很高,但是没有明显的5XX错误和异常日志,有时就是有异常但是也不能明确的指出具体的代码错误.当面临这 ...
- 【应用服务 App Service】App Service 中部署Java应用中文乱码现象
问题情形 有时候部署在 Azure App Service的 Java应用会出现乱码 详细日志 无 问题原因 因为 App Service默认的编码为gbk,所以在显示页面或传递中文字符时就会出现乱 ...
- 【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
欢迎使用 Blazor!Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI. 共享使用 .NET 编写的 ...
- 【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
测试App Service是否可以访问其他DNS 当应用服务(Azure App Service)创建完成后,想通过ping命令来查看是否可以访问其他站点或解析DNS,但是发现ping命令无法使用.这 ...
- 【应用服务 App Service】App Service中抓取网络日志
问题描述 众所周知,Azure App Service是一种PaaS服务,也就是说,IaaS层面的所有内容都由平台维护,所以使用App Service的我们根本无法触碰到远行程序的虚拟机(VM), 所 ...
- 【应用服务 App Service】解决无法从Azure门户SSH登录问题
问题描述 中国区的Azure App Service(应用服务)已经支持创建Docker并选择Linux环境.在使用中,我们可以继续通过kudu站点的方式登录查看站点的一些日志及部署文件.它的登录方式 ...
- 【应用服务 App Service】Azure App Service 中如何安装mcrypt - PHP
问题描述 Azure App Service (应用服务)如何安装PHP的扩展 mcrypt(mcrypt 是php里面重要的加密支持扩展库) 准备条件 创建App Service, Runtime ...
- 【应用服务 App Service】在Azure App Service中使用WebSocket - PHP的问题 - 如何使用和调用
问题描述 在Azure App Service中,有对.Net,Java的WebSocket支持的示例代码,但是没有成功的PHP代码. 以下的步骤则是如何基于Azure App Service实现PH ...
- 【应用服务 App Service】发布到Azure上的应用显示时间不是本地时间的问题,修改应用服务的默认时区
问题情形 应用程序发布到App Service后,时间显示不是北京时间,默认情况为UTC时间,比中国时间晚 8 个小时. 详细日志 无 问题原因 Azure 上所有的服务时间都采用了 UTC 时间. ...
随机推荐
- ESP32 ADF windows开发环境搭建 适配ADF到ESP32A1S(转)
搭建ESP32A1S的ADF开发环境 一,获取IDF和IDF-TOOL adf是乐鑫的音频开发框架,里面有许多乐鑫的音频开发API,同时ADF是基于IDF的.这一部分可以按照官网的教程一步一步来.官网 ...
- homestead
前言 之前写过一篇文章(https://www.jianshu.com/p/5f30280a3c18),说不需要这玩意儿一样可以开发.是的,但是对于团队来说,使用统一的环境.开发工具.编码规范等,对于 ...
- 海亮NOIP集训-每日总结
[总结] xzh 2021暑假每日结 2021年7月12日 内容主题 DP,树型DP(讲解人:王修涵) 考场题目总结 T1: 考场简单想法: 算出两两点间距离,贪心,所用时间 \(1.5h\) 左右. ...
- Django基础07篇 ORM操作
1.新增(类似数据库操作的insert) # 新增 #方式一: models.Category.objects.create(name='MySQL') #方式二: c = models.Catego ...
- WIN10家庭版 访问WINXP 共享打印机
WIN10家庭版 1.安装对应的打印机驱动 2.打开WIN10计算机---在地址栏中输入:\\计算机XP名称,显示对应的共享资源,直接选择即可.如果无法访问则进行如下第三步 3.设置过程 开始 -设置 ...
- C语言:宏完美定义
#include <stdio.h> #define M (n*n+3*n) #define M1 n*n+3*n int main(){ int sum, n; printf(" ...
- LeetCode 847. Shortest Path Visiting All Nodes
题目链接:https://leetcode.com/problems/shortest-path-visiting-all-nodes/ 题意:已知一条无向图,问经过所有点的最短路径是多长,边权都为1 ...
- lucene 类介绍
lucene中重要的类: IndexWriter:lucene中最重要的类之一,主要用于索引的创建 Analyzer(抽象类):分析器,主要用于分析文本,常用的有StandardAnalyzer分析器 ...
- Xshell、winscp连不上Linux虚拟机
1.环境 本地机器WIN7环境,使用VMware Workstation Pro安装的CentOS7,系统镜像CentOS-6.1-x86_64-netinstall.iso 2.问题与分析 我的虚拟 ...
- Spring Boot的MyBatis注解:@MapperScan和@Mapper(十七)
1.Spring Boot与MyBatis融合的矛盾问题: Spring家族的使命就是为了简化而生,但是随着Spring的发展壮大,有点事与愿违了.为了坚持初心,Spring家族祭出了一大杀器---S ...
