解析域名(非网站域名)、挂载磁盘(若有另购)、修改实例名称、主机名
设置阿里云(重要)
远程连接进入 ECS(若解析未生效可以先用 IP)(若新服默认使用 3389 端口,可先在安全组临时放行 3389 端口)
开启 Windows 防火墙(使用推荐设置)
Windows 更新、并在高级选项中开启(更新 Windows 时接收其它 Microsoft 产品的更新)
安装 IIS:服务器管理器-添加角色和功能-勾选“Web 服务器(IIS)”包括管理工具
建议勾选:
默认已勾选项
按需安装 IP 和域限制
跟踪(即“失败请求跟踪”)
请求监视器、日志记录工具、
按需安装 ASP
按需安装 ASP.NET 4.8(会同时勾选 .NET Extensibility 4.8、ISAPI 扩展、ISAPI 筛选器)
按需安装 WebSocket 协议
应用程序初始化(建议安装)
管理服务(用于 Web 部署)
细节:设置任务栏;设置桌面图标;个性化-颜色-勾选“标题栏和窗口边框”;设置输入法;
下载 URL 重写(文件名:rewrite_amd64_zh-CN.msi)
下载 MySQL Connector/NET(文件名:mysql-connector-net-8.0.19.msi)
下载 ASP.NET Core 运行时 Hosting Bundle(文件名:dotnet-hosting-*.*.*-win.exe)
下载 .NET 桌面运行时 Windows x64(文件名:windowsdesktop-runtime-*.*.*-win-x64.exe)
下载 Web Deploy(文件名:WebDeploy_amd64_zh-CN.msi)
服务:设置“ASP.NET State Service”自动启动
IIS 日志:路径(如 D:\wwwlogs),每小时(统一设置一个全局的就行了,不需要设置每个网站),按需勾选“使用本地时间进行文件命名和滚动更新”
IIS 导入证书:个人、允许导出证书。参
设置默认网站的 https、设置默认网站跳转到指定网站。
设置权限:设置网站所在分区(如 D 盘),安全,添加 IIS_IUSRS,全部拒绝(防止跨站)
添加用户:为每个网站创建用户(既能防止跨站,又能跟踪进程),密码不能改、不过期,仅隶属于 IIS_IUSRS,并添加到每个网站的根目录,若用户创建失败看这里。
创建网站:设置访问物理路径的用户;设置应用程序池的“标识”用户;编辑绑定:勾选需要服务器名称指示;检查域名是否绑全;设置写入目录的用户权限;设置写入目录的“处理程序映射”取消“脚本”。
重复上面两步
检查所有网站用户是否仅隶属于 IIS_IUSRS(在“组”页面双击 Users 和 IIS_IUSRS 查看成员)
在应用程序池列表页面检查 CLR 版本、管托管道模式和标识;在网站列表页面检查绑定和路径
设置“IP 地址和域限制”
废弃旧服时再次检查:IIS 中各功能设置、hosts、安装的应用程序、启动项、任务计划程序、服务、防火墙等
接入 WAF
解析各网站域名
其它:资源管理器-选项-查看-去掉“始终显示图标,从不显示缩略图”前的勾
再次检查阿里云设置
在备份工具中添加该服务器的所有备份项
其它:到期日期提醒、
>> 关于域名解析
因各地域名解析生效时间不可控,一般国内域名 1 天内,国际域名 2 天内。
若网站数据库在 RDS、上传文件在 OSS,则解析 48 小时后直接停止原网站即可;(比较理想的)
文件上传到 ECS 的可使用 FTP 等工具定时同步文件,或直接停止原网站。(网友会遇到新文章中图片无法显示等问题)
还有一种方法是新网站提前解析一个备用域名,确保完全生效后再修改正式域名的解析,原网站无条件跳转到备用域名,如果数据库中有保存完整网址路径的,关闭原网站并解绑备用域名之后,进行批量替换。(缺点是可能会影响在搜索引擎的网站权重)
部分有定时器的网站要注意,如果两个网站的定时器都正常开启会导致意外的,需要停止其中一个网站的定时器。
当然每种方法都有优缺点,选择可以接受且方便的一种即可。
更多文章:
本文图片基于网络图片更新,如有侵权,请通过网站底部联系站长删除。
本文内容来源于网络,如有错误欢迎批评指正。
USB 接口类型
USB 接口有 Mini、Micro、Type 三种外观。

通常说的 USB-C 一般指 USB Type-C,因为没有 Mini-C 和 Micro-C。而 USB-A / USB-B 一般也特指 Type-A / Type-B。
数据传输能力
USB 标准(附 Thunderbolt)
| 规格 | 别名 | 接口类型 | 理论带宽 | 电力规格 | 备注 |
| USB 1.0 | Low-Speed | Mini A / B Micro A / B 2.0 Type A / B 2.0 | 1.5 Mbps | 5V/0.5A | |
| USB 1.1 | Full-Speed | 12 Mbps | 5V/0.5A | ||
| USB 2.0 | Hi-Speed High Speed | Mini A / B Micro A / B 2.0 Type A 2.0 / B 2.0 / C | 480 Mbps | 5V/0.5A | |
USB 3.0 USB 3.1 Gen 1 USB 3.2 Gen 1 | SuperSpeed | Micro B 3.0 Type A 3.x / B 3.x / C | 5 Gbps | 5V/0.9A PD2.0 100W | |
USB 3.1 USB 3.1 Gen 2 USB 3.2 Gen 2 | SuperSpeed+ | Micro B 3.0 Type A 3.x / B 3.x / C | 10 Gbps | 5V/0.9A PD2.0 100W | |
USB 3.2 USB 3.2 Gen 2×2 | SuperSpeed 20Gbps | Type-C | 20 Gbps | PD2.0 100W | |
USB4 Gen 2×2 | USB4 20Gbps | Type-C | 20 Gbps | PD3.0 100W PD3.1 240W | 兼容 Thunderbolt 3 |
| USB4 Gen 3×2 | USB4 40Gbps | Type-C | 40 Gbps | ||
| USB4 2.0 | USB4 80Gbps | Type-C | 80 Gbps | ||
| Thunderbolt 1 | 雷雳1、雷电1 | Mini DisplayPort | 10 Gbps | ||
| Thunderbolt 2 | 雷雳2、雷电2 | Mini DisplayPort | 20 Gbps | ||
| Thunderbolt 3 | 雷雳3、雷电3 | Type-C | 40 Gbps | 配件供电 15W PD 100W | 兼容 USB4 |
| Thunderbolt 4 | 雷雳4、雷电4 | Type-C | 40 Gbps | 配件供电 15W PD 100W | 兼容 Thunderbolt 3 |
| Thunderbolt 5 | 雷雳5、雷电5 | Type-C | 80Gpb (带宽增强 120Gpbs) | 240W | USB4 V2、DisplayPort 2.1 和 PCI Express Gen 4 |
Thunderbolt / 雷雳 / 雷电 是同一个意思,而闪电接口指的是 Lightning,都是区别于 USB 的传输技术
Thunderbolt 本身是数据传输和显示协议,Thunderbolt 3 起采用 USB-C 外观,支持 PD 协议后可进行快速充电
识别不同标准的接口,比如若 Type-C 接口旁边写着 ss 和 5 表示 SuperSpeed 和 5Gbps,即 USB 3.0;插口旁边带有⚡️标志表示雷电接口。
电力传输能力
常见快充协议
| 协议 | 版本 | 发布年份 | 区别 | 接口形态 |
BC (Battery Charging Specification) | 1.2 | 2010 年 | 7.5W(5V/1.5A) | |
高通 QC (Qualcomm Quick Charge) | 1.0 | 2013 年 | 10W(5V/2A) | Micro-USB |
| 2.0 | 2014 年 | Class A:5V、9V、12V 电压可选,最大输出功率为 18W? Class B:5V、9V、12V、20V 电压可选,最大输出功率为 60W | Micro-USB / Type-A | |
| 3.0 | 2015 年 | Class A:3.6-12V,Class B:3.6-20V,支持动态调整电压和电流,最大输出功率为 18W? | Micro-USB / Type-A / Type-C | |
| 4.0 | 2017 年 | 5V/5.6A 或 9V/3A,最大输出功率为 28W?,兼容了 USB PD 2.0 / PD 3.0 PPS? | Type-C | |
| 4+ | 2019 年 | 最大输出功率为 100W?,支持 PPS 协议?兼容 QC2.0~QC3.0 | Type-C | |
| 5.0 | 2020 年 | 最大输出功率 > 100W,兼容 QC2.0~QC4+ | Type-C | |
USB-PD (USB Power Delivery) | 1.0 | 2012 年 | 5V、12V、20V 电压可选,最大输出功率为 10W | Micro-USB / Type-A / Type-B |
| 2.0 | 2014 年 | 5V3A、9V3A、15V3A、20V3A、20V5A(E-Marked),最大输出功率为 100W | Type-C | |
| 3.0 | 2015 年 | 5V3A、9V3A、15V3A、20V3A、20V5A(E-Marked),最大输出功率为 100W | Type-C | |
| 3.0 PPS | 2017 年 | 支持 PPS 协议,3.3V-21V 3A-5A | Type-C | |
| 3.1 | 2021 年 | Type-C | ||
| 3.2 | 2023年 | 强制 AVS,优化 EPR | Type-C |
华为 SuperCharge(FCP / SCP)、小米 Mi Turbo Charge、OPPO VOOC、vivo FlashCharge、三星 AFC 等私有协议不在此列出。
Magsafe 电源适配器 是磁吸式有线充电接口,最大输出功率为 85W(截止2023年),用于 Macbook;
Magsafe 充电器 是磁吸式无线充电接口,最大输出功率为 15W(截止2023年),用于 iPhone,不属于快充。
Qi 是无线充电协议,Qi1 最大输出功率为 7.5W,Qi2 最大输出功率为 15W。
功率决定充电速度,功率与电压电流的关系:P=U*I,如 5V1A=5W
一条 USB 线由插座/母口(Receptacle)、插头/公口(Plug)和线缆(Cable)三部分组成,要实现某个协议,需要插座和插头都支持该协议。
PPS:Programmable Power Supply 可编程电源
SPR:Standard Power Range 标准功率范围
EPR:Extended Power Range 扩展功率范围
FCP:Fast Charge Protocol 华为早期快充协议,支持 18W
SCP:Super Charge Protocol 华为超级快充协议,支持 22.5W、40W
在代码
app.Run();处报错:
System.IO.IOException:“Failed to bind to address http://localhost:5182.”
SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试。
原因是端口被占用,解决方法:
方法一、重启电脑可能解决该问题。
方法二、使用命令 netstat -ano 找到占用该端口的进程,关闭即可。
方法三、修改运行端口。展开解决方案资源管理器中项目根目录下的“Properties”目录,打开“launchSettings.json”,找到对应你运行方式的配置,修改相应 Url 中的端口。
下载 sqlmap:https://github.com/sqlmapproject/sqlmap
下载 python:https://www.python.org/downloads/
以 windows 版为例:
安装 python;
解压缩 sqlmap;
“在终端中打开 / 在命令行中打开” sqlmap.py 文件所在目录;
执行命令
python sqlmap.py -u "网址" --data="POST数据" --tables需要注意的是,sqlmap 会记录探测过的网址的结果信息,修复网站漏洞后要再次检测是否安全时,应删除缓存文件,位置在:
C:\Users\用户\AppData\Local\sqlmap\output\
首先,禁止网站下所有 .php 等文件均不允许被访问到。
在 nginx 网站配置文件中,include enable-php-**.conf; 上方插入:
location ~ ^/.*\.(php|php5|py|sh|bash|out)$ { deny all; }其中,^ 匹配开始,/.* 匹配所有目录和文件名,\.(php|php5|py|sh|bash|out) 匹配文件后缀名,$ 匹配结束。
即便如此,仍然忽略了 nginx 中 .php 文件名后加斜杠仍然能访问到的情况,譬如我们访问这个网址:
https://xoyozo.net/phpinfo.php/abc.htmlnginx 仍然运行了 phpinfo.php,给了后门可趁之机,所以改进为:
location ~ ^/.*\.(php|php5|py|sh|bash|out)(/.*)?$ { deny all; }Discuz! X3.4 需要写入权限的目录:
/自研目录/upload/
/config/
/data/
/uc_client/data/
/uc_server/data/
/source/plugin/
但,这些都不重要,我们已经禁止了所有目录的 .php 访问了。
第二步,解禁需要直接被访问到的文件路径。
Discuz! X3.4 根目录下的 .php 文件都是入口文件,需要能够被访问到:
/admin.php
/api.php
/connect.php
/forum.php
/group.php
/home.php
/index.php
/member.php
/misc.php
/plugin.php
/portal.php
/search.php其它目录中需要被直接访问到的文件:
/archiver/index.php
/m/index.php
/uc_server/admin.php
/uc_server/avatar.php
/uc_server/index.php部分插件文件需要能够被直接访问到:
/source/plugin/magmobileapi/magmobileapi.php
/source/plugin/smstong/accountinfo.php
/source/plugin/smstong/checkenv.php另外如果有自建目录需要有 .php 访问权限,那么也需要在此处加白,本文以 /_/ 目录为例
最终拼成:工具
location ~ ^(?:(?!(/admin\.php|/api\.php|/connect\.php|/forum\.php|/group\.php|/home\.php|/index\.php|/member\.php|/misc\.php|/plugin\.php|/portal\.php|/search\.php|/archiver/index\.php|/m/index\.php|/uc_server/admin\.php|/uc_server/avatar\.php|/uc_server/index\.php|/source/plugin/magmobileapi/magmobileapi\.php|/source/plugin/smstong/accountinfo\.php|/source/plugin/smstong/checkenv\.php|/_/.*\.php))/.*\.(php|php5|py|sh|bash|out)(/.*)?)$ { deny all; }这里用到正则表达式中的“不捕获”和“负向零宽断言”语法,格式为:
^(?:(?!(允许的目录或文件A|允许的目录或文件B))禁止的目录和文件)$值得注意的是,此句负向零宽断言中的匹配内容是匹配前缀的,也就是说
https://xoyozo.net/index.php
https://xoyozo.net/index.php/abc.html都可以访问到,而
https://xoyozo.net/forbidden.php
https://xoyozo.net/forbidden.php/abc.html都访问不到,这是符合需求的。
如果自建目录 /_/ 下有写入需求,单独禁止即可,以 /_/upload/ 为例:
location ~ ^/_/upload/.*\.(php|php5|py|sh|bash|out)(/.*)?$ { deny all; }ThinkPHP 网站有统一的访问入口,可按本文方法配置访问权限。
特别注意:上面的代码必须加在 PHP 引用配置(include enable-php-**.conf; 或 fastcgi_pass)的上方才有效。
文件已正常部署且能正常访问到,但点击“文件已部署,立即认证”按钮时,然后被提示:访问文本资源失败,请调整后重试。原因是微信验证请求是 http 协议,如果网站强制启用 https 则无法完成验证。
在 ASP.NET 6 中可打开 Program.cs 文件,临时注释掉下行即可:
app.UseHttpsRedirection();您需要将 IWebHostEnvironment 注入到类中才能访问属性值 ApplicationBasePath:阅读有关依赖关系注入的信息。成功注入依赖项后,wwwroot 路径应该可供您使用。例如:
private readonly IWebHostEnvironment _appEnvironment;
public ProductsController(IWebHostEnvironment appEnvironment)
{
_appEnvironment = appEnvironment;
}用法:
[HttpGet]
public IEnumerable<string> Get()
{
FolderScanner scanner = new FolderScanner(_appEnvironment.WebRootPath);
return scanner.scan();
}编辑:在 ASP.NET 的更高版本中,IHostingEnvironment 已被替换为 IWebHostEnvironment。
普通的 nginx http 反向代理 https 时是需要配置证书的,但我们又不可能由源域名的证书,所以要使用 nginx 的 stream 模块。普通的 nginx 反向代理属于第七层代理,而 stream 模块是第四层代理,通过转发的 tcp/ip 协议实现高功能,所以不需要证书。
我们这里以使用宝塔安装的 nginx 为例,其实其他系统也是类似,只要找到编译的 nginx 的源码目录就行了
编译前先将已经安装的 nginx 文件进行备份
通过 ps 命令查看 nginx 文件的路径。以下所有步骤都以自身 nginx 路径为准
# ps -elf | grep nginx
# cd /www/server/nginx/sbin/
# cp nginx nginx.bak然后查看当前 nginx 编译的参数
/www/server/nginx/sbin/nginx -V将 ./configure arguents:之后的内容复制到记事本备用(备注:我们这里其实使用的是 Tengine-2.3.1,所以下面的编译参数可能跟普通 nginx 不是很一样)
内容如下:
--user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/lua_nginx_module --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre=pcre-8.42 --with-cc-opt=-Wno-error --add-module=/www/server/nginx/src/ngx-pagespeed
进入 src 目录
cd /www/server/nginx/src我们在上面的内容中加入两个参数
./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/lua_nginx_module --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre=pcre-8.42 --with-cc-opt=-Wno-error --add-module=/www/server/nginx/src/ngx-pagespeed --with-stream --with-stream_ssl_preread_module
并执行它
然后
make && make install重启 nginx
service nginx restartnginx -V 看看模块是不是加载了

新建个站点,配置反向代理
卸载
使用 nginx.bak 文件替换掉自编译的 nginx 文件,替换后重启 nginx。
当 ASP.NET 发布一个新的小版本更新时(以 .NET 5.0.10 为例),生产环境服务器端可以直接下载安装 .NET 5.0.10 来自动替换 .NET 5.0.9。
倘若这时直接使用 VS 将 nuget 中版本为 5.0.9 的组件更新到 5.0.10 发布到服务器上的话,可能会发生错误:
HTTP Error 500.30 - ASP.NET Core app failed to start
这里我们可以在 nuget 回滚相关组件的版本至 5.0.9,等 VS 发现新的版本更新时,更新 VS 开发工具后,再更新 nuget 组件并进行发布即可。
着急的小伙伴可以直接前往 Microsoft .NET 网站下载安装包含 Runtime 5.0.10 的 SDK:

该情况同样发生在 ASP.NET Core 3.1 等大版本上。
若仍未生效,请重启服务器。
----------------
后注:安装完成后重启服务器可避免以上烦恼!