政务网中使用内部华为云

news2024/10/6 12:30:34

项目按甲方要求,部署在政务网,各种需要在系统中播放的视频存放于内部华为云;然后,系统需要在互联网上访问。

经过一天捣鼓,终于搞定。过程中遇到了许多问题,有nginx代理的,docker域名解析的,华为云存储桶默认设定的访问策略不支持公共读和匿名访问,https站点无法访问http资源,等等。最大的困难在于,政务网的管理员对华为云好像也不上心,一问三不知,没有示例,全凭自己摸索和分析;而且,服务器操作系统是linux,华为云只有一个名曰obsutil的命令行工具,只能敲命令和访问策略。

过程和技术点如下:

一、首先华为云存储桶中的资源应该有个地址

利用华为云所谓的对象存储工具obsutil,浏览事先上传的资源,都是 obs://。。。这种格式,如图所示。这是什么地址?浏览器应该认不了这种地址吧。查了许多次政务云管理员推荐的华为云操作手册,认为应该会有个域名,询问政务云管理员,果然是有,格式为 桶名.华为云域名。不问还不说。老实说,单凭他们刚开始给的资料,真的是摸不着头脑。看看华为云操作手册,跟世界上所有的操作手册一样,晦涩难懂,欲言又止,90%是废话。
在这里插入图片描述

二、存储桶的访问策略

如上所述,访问桶中对象,可通过 https://桶名.华为云域名/对象这种地址。不过,服务器是linux,没有桌面,只有命令行。怎么测试能否访问这些资源呢?用wget。如下:

wget http://sthj.obsv3.huawei.inner-cloud.com/temp/test.txt

但结果提示:403,Forbidden。

如果将访问路径改为:

wget http://sthj.obsv3.huawei.inner-cloud.com/temp123/test.txt

则提示 404,Not Found。这说明,路径是正确的,可能是桶有什么安全策略,限制了。

解决如下:

1、设置桶属性

获取桶属性

./obsutil stat obs://sthj -acl

显示Acl为private,私有桶。改为public-read:

./obsutil chattri obs://sthj -acl=public-read

运行wget,仍然是403,forbidden。

2、设置桶策略

1)获取桶策略

将策略下载到/media/root/obsutil/temp/policy.json

./obsutil bucketpolicy obs://sthj -method=get -localfile=/media/root/obsutil/temp/policy.json

策略如下

{
    "Statement": [
        {
            "Sid": "Customized1681356038822",
            "Effect": "Allow",
            "Principal": {
                "ID": [
                    "domain/de389423d54b4fdca58169087700018e:user/44fc93c699b141928a3afacda4ef127c",
                    "domain/de389423d54b4fdca58169087700018e:user/8146a1dc3b2c41ab9b4c75e120ef451f",
                    "domain/de389423d54b4fdca58169087700018e:user/633787e9f6854af28bbcfa3a453c8d60"
                ]
            },
            "Action": [
                "*"
            ],
            "Resource": [
                "sthj/*"
            ]
        },
        {
            "Sid": "Customized1681356059187",
            "Effect": "Allow",
            "Principal": {
                "ID": [
                    "domain/de389423d54b4fdca58169087700018e:user/44fc93c699b141928a3afacda4ef127c",
                    "domain/de389423d54b4fdca58169087700018e:user/8146a1dc3b2c41ab9b4c75e120ef451f",
                    "domain/de389423d54b4fdca58169087700018e:user/633787e9f6854af28bbcfa3a453c8d60"
                ]
            },
            "Action": [
                "*"
            ],
            "Resource": [
                "sthj"
            ]
        }
    ]
}

其中,sthj是桶名。"Effect"可选值为Allow或Deny;"Principal"为用户,如果为“*”则代表支持匿名;"Action"就是各种操作权限,如"GetObject"代表读。官方文章

2)修改桶策略文件

将桶下资源改为匿名可读(见第三项),如下:

{
    "Statement": [
        {
            "Sid": "Customized1681356038822",
            "Effect": "Allow",
            "Principal": {
                "ID": [
                    "domain/de389423d54b4fdca58169087700018e:user/44fc93c699b141928a3afacda4ef127c",
                    "domain/de389423d54b4fdca58169087700018e:user/8146a1dc3b2c41ab9b4c75e120ef451f",
                    "domain/de389423d54b4fdca58169087700018e:user/633787e9f6854af28bbcfa3a453c8d60"
                ]
            },
            "Action": [
                "*"
            ],
            "Resource": [
                "sthj/*"
            ]
        },
        {
            "Sid": "Customized1681356059187",
            "Effect": "Allow",
            "Principal": {
                "ID": [
                    "domain/de389423d54b4fdca58169087700018e:user/44fc93c699b141928a3afacda4ef127c",
                    "domain/de389423d54b4fdca58169087700018e:user/8146a1dc3b2c41ab9b4c75e120ef451f",
                    "domain/de389423d54b4fdca58169087700018e:user/633787e9f6854af28bbcfa3a453c8d60"
                ]
            },
            "Action": [
                "*"
            ],
            "Resource": [
                "sthj"
            ]
        },
        {
            "Sid": "Customized1681356038822publicread",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "GetObject","RestoreObject","GetObjectVersion"
            ],
            "Resource": [
                "sthj/*"
            ]
		}
    ]
}

3、更新桶策略

以上只是改了桶策略文件,还要将此文件更新桶策略才有效:

./obsutil bucketpolicy obs://sthj -method=put -localfile=/media/root/obsutil/conf/policy.json

至此,可通过wget访问。但桶属性和桶策略,有啥区别呢?它们是不是共同控制桶的访问呢?不懂,没时间尝试。

三、内部域名的转发

但是,系统部署在政务云,华为云算是内部的私有云。对应的域名,也是内部的,如果互联网需要访问这个华为云里面的东西,就需要在双网卡的服务器上用nginx做个转发,或曰反向代理。nginx配置如下:

location /obs/ {
	proxy_pass http://sthj.obsv3.huawei.inner-cloud.com/;
	proxy_redirect off;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Real-IP         $remote_addr;
}

四、docker容器添加域名解析

但我们的nginx是运行在docker里的。上面这段配置写到nginx的配置文件后,该docker容器无法启动,提示不能解析域名sthj.obsv3.huawei.inner-cloud.com。其实不奇怪,docker就是一个容器,就像一个简单的操作系统,它里面没有相应的域名解析很正常。

参照网上教程Docker添加域名解析,删掉原nginx的docker容器,重新创建,在创建脚本中加入域名解析:

docker run \
--add-host=sthj.obsv3.huawei.inner-cloud.com:192.168.10.249 \
--name forward --privileged -it -p 80:80 \
-v /home/web/nginx/conf/forward.conf:/etc/nginx/nginx.conf:ro \
-v /home/web/nginx/html:/usr/share/nginx/html:rw \
-v /home/web/nginx/logs/forward:/var/log/nginx \
-d nginx:stable-alpine

nginx启动正常。

五、https站点无法访问http问题

忐忑不安地在浏览器中键入转发后的地址,结果显示无法访问,一盆冷水。不过,注意到转发地址为https。在https站点中,有个毛病,是无法连接http站点资源的。而华为云两种协议都支持,于是将nginx转发设置稍加修改,将http改为https。啊,月亮下去了,毛病出来了。

location /obs/ {
	proxy_pass https://sthj.obsv3.huawei.inner-cloud.com/;
	proxy_redirect off;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Real-IP         $remote_addr;
}

obsutil工具使用说明:
对象存储服务工具指南(obsutil)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/496440.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FTP Entering Extended Passive Mode

目录 原因 两种方法解决,哪个行用哪种 方法一 方法二 原因 FTP的连接建立有两种模式PORT

10个优秀设计网站盘点

从平面广告设计、包装设计和标志设计到游戏特效,都与我们的生活息息相关。过去,设计师依靠一张图纸和一支笔,但进入数字时代后,设计工作从图纸转移到了电脑上。 各种设计网站和在线设计工具相继衍生,简化了工作步骤&a…

Packet Tracer - 配置扩展 ACL - 场景 1

Packet Tracer - 配置扩展 ACL - 场景 1 拓扑图 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 R1 G0/0 172.22.34.65 255.255.255.224 不适用 G0/1 172.22.34.97 255.255.255.240 不适用 G0/2 172.22.34.1 255.255.255.192 不适用 服务器 NIC 172.22.…

戴尔Alienware x15R1 x15R2原厂win11系统带F12 Support Assist OS Recovery恢复功能

戴尔Alienware x15R1 x15R2原厂win11系统带F12 Support Assist OS Recovery恢复功能 恢复各机型预装系统,带所有dell主题壁纸、dell软件驱动、带戴尔SupportAssist OS Recovery恢复功能,一次性恢复成新机状态,并且以后不用重装系统&#xff…

pyinstaller打包Mediapipe时遇到的问题

使用pyinstaller对python文件打包 打包流程 安装pyinstaller pip install pyinstaller打包文件 pyinstaller test.py 打包完成后会生成一个dist文件夹,打包的文件会在里面,找到test.exe。 pyinstaller -F test.py 加上-F会把所有的文件打包成一个exe,也是在dist文件夹下…

Docker File

DockerFile 是用来构建Docker镜像的构建文件,是由一些列命令和参数构成的脚本。 一、DockerFile 一、在home目录下创建docker-test-volume目录 cd /home mkdir docker-test-volume 二、在home目录下的docker-test-volume目录创建dockerfile1文件 vim dockerfile1…

运营-8.内容分发

内容分发本质要解决的问题包含两点: 1.高效的连接人与信息 2.过滤出有价值的信息,让合适的人看到合适的信息。 常见的内容分发方式 1.编辑分发 2.订阅分发 3.社交分发 4.算法分发 TIPS:根据产品性质、技术实力等因素,不同…

长尾学习(一):Long-Tail Learning via Logit Adjustment

一、背景 这是一篇从损失函数入手解决长尾问题的一种新思路,借鉴基于标签频次的logit adjustment方法,鼓励模型在高频类别与低频类别之间的Margin较大,提出了两种校准方法: 事后校准(post-hoc adjustment)…

tiechui_lesson03_缓冲读写与自定义控制

学习了与应用层通过缓冲区方式的交互&#xff0c;包括读写&#xff0c;自定义控制等。小坑比较多&#xff0c;大部分是是头文件和设置上的错误&#xff0c;跟着视频敲想快进就跳过了一些细节。包括&#xff1a; <windef.h> 头文件的引用 //使用DWORD等类型switch语句…

iOS开发多target

场景 背景:设想一下有一个场景,一个业务分为多种身份,他们大部分功能是相同的,但是也有自己的差异性。这种情况,想要构建出不同身份的APP。你会怎么做??? 当然,你可以拷贝一份代码出来,给项目重新命名。这样做的好处是,他们互相不会冲突,不用去关心是否有逻辑的冲…

Python中变量赋值过程的理解

Python中变量赋值过程的理解 在Python中对变量赋值过程的理解&#xff0c;有助于学习者对Python的变量和所指向的对象之间的指向关系深刻理解&#xff0c;避免编程中多个变量赋值后&#xff0c;对变量结果的不确定&#xff0c;减少赋值过程中疑问和困惑。 1.赋值过程基本过程 …

全文检索-Elasticsearch-进阶检索

文章目录 前言一、SearchAPI1.1 URL 后接参数检索1.2 URL 加请求体检索 二、Query DSL2.1 基本语法格式2.2 匹配查询 match2.3 短语匹配 match_phase2.4 多字段匹配 multi_match2.5 复合查询 bool2.6 过滤 filter2.7 查询 term2.8 聚合 aggregations 三、Mapping3.1 待完成3.2 …

Mybatis动态SQL用法

动态SQL是Mybatis的一大重要特性&#xff0c;它可以完成不同条件下的SQL拼接&#xff0c;降低了因为SQL语句书写中的小错误而造成程序报错的概率&#xff0c;例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一个列名的逗号&#xff0c;利用动态SQL就可…

Vue项目dialog组件数据项清空

目录 一、重置myParams 二、this.$refs["name"].resetFields() 1、使用v-if 然后渲染, 无效 2、使用nextTick, 数据显示慢一拍, 重新打开dialog才会显示上次输入的内容 三、复盘-最终方法 一、重置myParams <el-form:model"myParams":rules&quo…

ssh登录出现Permission denied, please try again可能的解决方案

问题描述 环境&#xff1a;ubuntu 20.04问题描述&#xff1a;在已经设置免密登录后&#xff0c;ssh登录时&#xff08;例如ssh localhost&#xff09;还需要输入密码&#xff0c;并且输入密码后出现下面一系列的报错&#xff1a; xxx(用户名)localhosts password: Permissio…

Makefile教程(入门介绍)

文章目录 前言一、Makefile介绍二、make和Makefile的关系三、编写一个简单的Makefile总结 前言 本篇文章将带大家学习Makefile&#xff0c;Makefile在文件的编译中起到重要作用&#xff0c;在Linux中我们也是经常使用到Makefile&#xff0c;下面我将会带大家学习什么是Makefil…

GNSS定位原理--理解笔记

1、利用“后方交会”原理进行定位。 由已知3个点的坐标以及3个已知点到未知点的距离&#xff0c;就可以计算出未知点的坐标。测量出3个已知点到位置点的距离后&#xff0c;根据三球交会定位&#xff0c;利用方程计算出未知点坐标。 两球交会得到一个圆&#xff0c;三球交会得…

【自学网络安全】从零开始学习网络渗透的核心知识点,助你入门宝典

前言 上周旁听了一个大学学长组织的线上网络安全交流会&#xff0c;里边不乏充斥着各位行业大牛&#xff0c;讲的内容确实精彩&#xff0c;可能对于网络安全经验5年的人来说&#xff0c;是受益匪浅&#xff0c;欢迎程度极高&#xff0c;恨不得跳出屏幕来表示赞同&#xff0c;毕…

初识Spring:如何在Maven工程上搭建Spring框架?

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 Mybatis版本&#xff1a;3.5.6 spring版本&#xff1a;5.3.1 文章目录 Spring系列专栏文章目录一. 什么是Spring&#xff1f;二. 如何搭建S…

基于海鸥算法改进的随机森林分类算法-附代码

基于海鸥算法改进的随机森林分类算法 文章目录 基于海鸥算法改进的随机森林分类算法1.数据集2.RF模型3.基于海鸥算法优化的RF4.测试结果5.Matlab代码6.Python代码 摘要&#xff1a;为了提高随机森林数据的分类预测准确率&#xff0c;对随机森林中的树木个数和最小叶子点数参数利…