我们一台主机上面,通常会有好几个程序/服务在跑,这些功能会分别监听并占用一个或多个 port。例如 http request 使用 80 port; https request 使用 443 port,以後我们的 MySQL 使用 3306 port。所以之前我们让 .NET API 直接使用 80 与 443 port 其实不是很好的做法。
之前我们跑 .NET Web API 都用环境变数硬性指定我们的 API 监听 80 与 443 port,这个同样是为了暂时跳过防火墙与 Web Server 的设定。今天我们就先来介绍一下 GCP 的防火墙设定,然後让 .NET Web API 用回它预设的 5000, 5001 port。
GCP 使用 “标记机制” 来对各个 VM 套用防火墙规则。我们可以预先设定防火墙规则,然後为它设定一个标签(tag),接着 GCP 会自动帮我们搜寻带有这个标签的 VM,为他们套用防火墙规则。例如我们之前在建立 VM 的时候,它其实就是替我们的 VM 加上了 http-server
与 https-server
两个标记,然後 GCP 就会为这个 VM 开通 80 与 443 port。
要建立自订的防火墙规则,首先到 虚拟私有云网路分类下的防火墙。点选上方的建立防火墙规则
接着,大部分的地方用预设值就好,只有几个地方要改
1 防火墙的名字跟描述
2 赋予这个防火墙规则一个或多个标记
3 指定 IP 来源范围设为 0.0.0.0/0 代表接收所有来源。当然,如果以後对安全性有要求,记得改成程序可以信任的 IP 来源。
4 指定 tcp 的 5000 与 5001 port。逗号(,)可以分隔多个 port;减号(-)可以指定一个范围的 port
建立完防火墙规则之後,我们要把它套用到 VM 上。直接到 VM 列表的页面,点选 VM 的名称可以查看 VM 的详细资料,然後点选上方的编辑
在网路标记的地方新增刚刚新增的防火墙标记,然後储存。
最後我们需要再回到 VM 上,把 CentOS的防火墙也开通
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd –reload
sudo yum install firewalld
最後一个步骤,我们把之前「借用」的 80 与 443 改回 .NET 预设的 5000, 5001。先用 vim 打开 service unit 档案
sudo vi /etc/systemd/system/ironman_api.service
然後把设定 port 的环境变数改成
Environment=ASPNETCORE_URLS=http://0.0.0.0:5000;https://0.0.0.0:5001
接着尝试重启服务会发现,Linux 跟我们警告 service 被改过了。必须执行这行指令重新载入 service
sudo systemctl daemon-reload
Reload 完就可以顺利重启 service,用 sudo systemctl status ironman_api.service
指令可以看到我们的 API 程序正在监听 5000 与 5001 port。
最後再到浏览器输入 https://外部IP:5001/api/User ,确定 API 正常发挥就OK了~收工!
>>: 【从实作学习ASP.NET Core】Day01 | 前言与建立专案
今天来试用 Heroku,并请使用 Heroku 的 Python 范例。 在这之前我已经有注册过 ...
建立 data.py 套入 pip install mongo bot_id.json { &quo...
第一天有讲到变数的部分,今天就让我们来深入了解一下吧! 首先,JAVA的资料型态可以分为原始资料型态...
亚当·贝特拉姆(Adam Bertram)解释了自动化新员工入职过程的好处。 不论全新租赁的角色如何...
今天终於能把查询物品拍卖价格网址这功能讲完了(汗) 物品拍卖价格网址目前热门的是universali...