IIS
     分类:Web服务器     有: 0 条评论

IIS

     分类:Web服务器     有: 0 条评论

证书不完整

将IIS中的证书转移到nginx中

背景:只有一个证书文件(crt、pem或p7b)和IIS中已导入了证书(私钥在IIS里);或者有p12文件(证书+私钥)
在IIS中导出证书,会导出pfx证书(记住导出密码)。

# 取出私钥
openssl pkcs12 -in 12345.pfx -nocerts -nodes -out privkey.pem(或example.key)
#openssl pkcs12 -in 12345.pfx -clcerts -nokeys -out example.crt

# 获取完整证书链
https://myssl.com/chain_download.html
上传crt或pem证书,获得至少两段`-----BEGIN CERTIFICATE`开头的证书,这就是完整的fullchain.crt

在nginx中设定这两个文件的路径、权限并重载Nginx配置就OK了。

将证书和私钥导入到IIS

背景:有证书文件和私钥文件。
需要配置证书到IIS中

# 在线合成pfx文件
https://www.myssl.cn/tools/merge-pfx-cert.html

openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out 12345.pfx

参考资料:
https://blog.51cto.com/wushank/1915795
https://www.chinassl.net/ssltools/convert-ssl-commands.html


设置、配置

SSL证书导入

中间证书导入(有中间证书就导入,没有就不用导入)(在 Microsoft IIS 8 中安装中级证书的步骤):https://sg.godaddy.com/zh/help/microsoft-iis-8-ssl-4951

法一(crt证书)

在IIS中点完成证书按提示走就行了;但是如果CSR不是本机生成的,在IIS中导入后证书会消失;这时只能用法二导入pfx文件。

安装证书:(在 Microsoft IIS 8 中安装 SSL 证书的步骤):
https://sg.godaddy.com/zh/help/microsoft-iis-8-ssl-4951
https://support.comodo.com/index.php?/Knowledgebase/Article/View/1159/0/certificate-installation-microsoft-iis-8x

法二(pfx、p7b等完整证书文件)

pfx、p7b等完整证书文件是包含私钥的,可以在线合成:https://www.myssl.cn/tools/merge-pfx-cert.html
粘贴私钥和证书,设置密码生成。

安装证书:
IIS中选择“证书管理”-->import然后按提示完成。


SSL证书导出

1,运行“mmc” ---> “添加/删除管理单元” ---> “证书” ---> “计算机账户”
2,在左侧,“个人”文件夹下有IIS的所有证书,在证书上“右键” --->“所有任务” ---> “导出” ---> “是,导出私钥” ---> 取消勾选“导出成功后删除私钥”,另外两个勾选 ---> 下一步设置密码、保存路径,完成。
3,在目标主机上也在mmc里导入就行了;IIS中(或者Internet选项中使用本地已存在证书),然后就可以在ISS中设置了。

参考:
https://cn.globalsign.com/support/support_ssl_55.html
https://www.sslaaa.com/help/iis_ssl_backup
https://www.wosign.com/support/ssl_bak_import.htm


限制IP访问(IP黑白名单)

先点左侧你要设置的网站,比如某个网站只允许指定的IP能访问,再设置下图(该功能要安装,没有的话再服务器管理里面添加角色)


设置完成后是立刻生效的。


HTTP跳转到HTTPS

首先,在服务器面板里添加HTTP跳转支持。
1,目标网站绑定目标网址并绑定443端口;比如我的网址是www.leolan.top,此时,只能用https://www.leolan.top打开网站。其他都打不开。
2,新建一个网站,随便命名,比如叫:HttpRedirect,在 HTTPRedirect(HTTP重定向)模块中设置跳转到:https://www.leolan.top并设置为301跳转。然后在这个网址上绑定各个80端口的子域名,如果输入https的子域名不会跳转就再绑定443端口的子域名。

这样的效果就是不管输入哪一个子域名都会跳转到设定的:https://www.leolan.top网址,就实现了强制HTTPS


URL重写工具-URL Rewrite

https://www.cnblogs.com/weixing/p/5430826.html
http://www.cnblogs.com/mahatmasmile/p/5725253.html
https://jingyan.baidu.com/article/ff411625c73c0812e482378f.html


301永久跳转

https://jingyan.baidu.com/article/fb48e8be75722f6e622e149f.html
http://www.cnblogs.com/proxyz/p/6289237.html


bat重启站点

CD %systemroot%\system32\inetsrv\
appcmd stop site /site.name:"网站名[IIS中设定的名称]"
appcmd start site /site.name:"网站名[IIS中设定的名称]"

指定时间暂停网站,之后自动恢复

原理就是到了指定时间修改web的根目录路径,指向到维护页面,到了恢复时间在改回来;利用win的排程服务运行powershell脚本。

# Suspendweb.ps1
Import-Module WebAdministration
Set-ItemProperty IIS:\Sites\[网站名,IIS里设置的站点名称] -name physicalPath -value "C:\Project\SuspendWeb[维护页面的路径]"
#记得在该目录下放入维护页面index.html

# Activateweb.ps1
Import-Module WebAdministration
Set-ItemProperty IIS:\Sites\[网站名,IIS里设置的站点名称] -name physicalPath -value "C:\Project\Website[正常的网站目录]"

在win计划任务中设置指定时间运行程序,程序:powershell 参数:-file "C:\auto_bat\Activateweb.ps1[脚本路径]"
在win计划任务中设置指定时间运行程序,程序:powershell 参数:-file "C:\auto_bat\Suspendweb.ps1[脚本路径]"

IIS大数据量并发解决方案(10W)

这里简单描述 大量的用户同时对系统的不同功能页面进行查找,更新操作的情况。

对服务器层面的处理

1.调整IIS 7应用程序池队列长度
由原来的默认1000改为65535。

IIS Manager > ApplicationPools > Advanced Settings
Queue Length : 65535

2.调整IIS 7的appConcurrentRequestLimit设置
由原来的默认5000改为100000。

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

# 在%systemroot%\System32\inetsrv\config\applicationHost.config中可以查看到该设置:

<serverRuntime appConcurrentRequestLimit="100000" />   

3. 调整machine.config中的processModel>requestQueueLimit的设置
由原来的默认5000改为100000。

<configuration>  
    <system.web>  
        <processModel requestQueueLimit="100000"/>   

4. 修改注册表,调整IIS 7支持的同时TCPIP连接数
由原来的默认5000改为100000。

reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameteris /v MaxConnections /t REG_DWORD /d 100000

5. 运行命令使设置生效

net stop http & net start http & iisreset

完成上述4个设置,就基本可以支持10万个同时请求。如果访问量达到10万以上,就可以考虑将程序和数据库按功能模块划分部署到多个服务器分担访问压力。另外可以考虑软硬件负载均衡。硬件负载均衡能够直接通过智能交换机实现,处理能力强,而且与系统无关,但是价格贵,配置困难,不能区分实习系统与应状态。所以硬件负载均衡适用于一大堆设备,大访问量,简单应用。软件负载均衡是基于系统与应用的,能过更好地根据系统与应用的状况来分配负载。性价比高。PCL负载均衡软件,Linux下的LVS软件。

其他一些注意的:
持久连接:网站可以启用;API不要启用
应用池:队列长度65535;回收时间(网站29小时;接口180分钟)
快速失败保护:False
处理程序模型:看cpu个数再分配工作者处理数上限(不要超过cpu数);一个线程大约150M RAM
CPU设定:限制占用太高杀掉进程,80%就好,killw3ap会自动重启该容器。

参考:https://www.cnblogs.com/wwy224y/p/3552194.html


报错

80端口被占用

改注册表后重启的方法并不管用。

即使关闭IIS也依然被占用;打开服务管理找到sql server reporting services服务停止;netstat -ano 里面的80端口就不见了;这时再启动你要使用的程序;再启动sql server reporting services服务就OK了。


(●゚ω゚●)