国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页服务器类Web服务器 → IIS绑定域名导致应用程序重启的解决方案

IIS绑定域名导致应用程序重启的解决方案

我要评论 2014/07/05 17:25:33 来源:国语自产精品视频在线看 编辑:zbbingyang.com [ ] 评论:0 点击:288次

这个问【zhè gè wèn】题比较📕小众【xiǎo zhòng】,却是不🌜好解决,在将多【zài jiāng duō】🏏个站点⛓迁移到一个站【yī gè zhàn】点⛓(Tenant Feature)的时候【de shí hòu】碰到了一个棘🕎手的问题🥣,用户需🍽要绑定【yào bǎng dìng】自定义🦀域名,但【dàn】IIS绑定域名的时候【de shí hòu】会导致这个⛷站点重启,那么只要一个用户绑【yòng hù bǎng】😈定了一【dìng le yī】个域名则会导🐑致这个⛷应用上的其它租户都【zū hù dōu】🌸会受到【huì shòu dào】影响,下面写出我们的解决😚方案,但不一【dàn bú yī】定是最【dìng shì zuì】⌛优的【yōu de】。

问题在IIS上绑定域名导致应用程序重启

一个简单的测试

1.新建一【xīn jiàn yī】🏿个空【gè kōng】MVC项目,在✋MvcApplication类中定义一个🏞全局的【quán jú de】静态变量

2.创建一个控制器和视图

3.在视图【zài shì tú】🍠页对MvcApplication中的Count进行🆖++并输出【bìng shū chū】

4.访问几次页面

5.绑定一个域名

6.刷新页面

至此验证完成,可以看到应用被重启了。

为什么绑定域名会导致应用程序重启

其实原理和更【lǐ hé gèng】改【gǎi】Web.config文件会🏻导致应😗用重启【yòng chóng qǐ】启动是🕉一样的【yī yàng de】,因为绑【yīn wéi bǎng】定域名【dìng yù míng】时实际🚟在C:\Windows\System32\inetsrv\config\applicationHost.config文件中增加一📒了一段配置,如下😷:

使用Nginx解决问题

为了解决这个问题【gè wèn tí】可😶谓是找【wèi shì zhǎo】🏛了很多资料🏋,最终无【zuì zhōng wú】奈使用✈一个代【yī gè dài】😆理服务🔧器来解【qì lái jiě】决这个问题【gè wèn tí】,虽然我觉得在这里【zhè lǐ】Nginx受了委屈🚩,因为它【yīn wéi tā】更大的【gèng dà de】作用是负载均衡🌤,但能解【dàn néng jiě】决问题【wèn tí】就行【jiù háng】,以后在🍣大访问量的时候也可🕋以派上用场🗯,下面就【xià miàn jiù】简述下使用👔Nginx解决这个问题【gè wèn tí】的过程。

原理其实非常【shí fēi cháng】简单,在用户✅访问一📭个【gè】👿Url时由Nginx去分配,这样域✔名就可以不用【yǐ bú yòng】➗直接绑定在IIS上【shàng】,而由【ér yóu】🍃Nginx来分配域名指【yù míng zhǐ】向哪里。

提前在IIS上绑定无数个泛解析域名

比如:site1.cs.xxx.com~site9999999.cs.xxx.com,这样就【zhè yàng jiù】免去了【miǎn qù le】在新增🅰Tenant时需要绑定域【bǎng dìng yù】💩名的尴📦尬。

将绑定自定义域名的动作交给Nginx

Nginx没有提供什么🗿API,只有一个【yī gè】配置👟文件和几个命令【lìng】,所以我【suǒ yǐ wǒ】🐓们要做【men yào zuò】的就是🏌将在🌝Nginx上配置【shàng pèi zhì】域名的动作【zuò】💳自动化,我们为🗾此写了【cǐ xiě le】一个【yī gè】Daemon Service来完成这个动作【zuò】💳,下面会介绍并放出这个守护⬅程序的使用说明及源码【mǎ】⏲。

这样【zhè yàng】IIS绑定域名的问🥋题就解🚴决了🈹,但其实💂在这个方案之【fāng àn zhī】前我们还有过【hái yǒu guò】其他的【qí tā de】方案。

被Pass掉的方案

1.一台服🦃务器只挂一个【guà yī gè】站点【zhàn diǎn】👈,而这个🎴站点【zhàn diǎn】👈不绑定任📗何域名,所有指📃向这个【xiàng zhè gè】服务器IP的80端口的【duān kǒu de】请求全部由这㊗个站来响应【xiǎng yīng】。

Pass原因【yuán yīn】🔌:浪费【làng fèi】资源,80端口被极大的😃浪费【làng fèi】。

2.每天定点绑定域名

Pass原因🅰:用户绑完域名后生效时间不【shí jiān bú】👩确定【què dìng】⬇,可能需【kě néng xū】要等到【yào děng dào】晚上12点之后才能生👓效。

Nginx自动化配置

Server

守护服🥙务的主要原理是这样【shì zhè yàng】🧝的,守护服🥙务提供👌一个【yī gè】WCF服务【fú wù】,这个【zhè gè】WCF服务【fú wù】中有两个🚀操作【cāo zuò】,绑定域名和删除域名,服务约【fú wù yuē】束如下💸:

具体实现代码就不演示了。

使用说明

1.配置守🈵护服务【hù fú wù】(App.config)

主要有两个配置:

NginxPath:Nginx的存放路径⬆,因为我【yīn wéi wǒ】要找到🏡配置文【pèi zhì wén】🌭件和【jiàn hé】nginx.exe,你懂的。

RunModel:因为Nginx只提供【zhī tí gòng】了命令行的模【háng de mó】😲式去执行,所以我需要借助【zhù】😞PowerShell或CMD,注意如果使用【guǒ shǐ yòng】🗯PowerShell,则🕗PowerShell的版本必须为3.0及以上【jí yǐ shàng】🎧。

2.配置Nginx

因为【yīn wéi】🚆Nginx默认的【mò rèn de】🚾配置文【pèi zhì wén】件中有🖱很多配置,所以我们单独把域名的配置独立出【dú lì chū】来【lái】,这就需要对Nginx原有的🌚配置进【pèi zhì jìn】🙈行一些🍀修改。

打开nginx-1.7.2\conf\nginx.conf文件🎬,在【zài】http节点下添加配【tiān jiā pèi】置🖐 include custom.conf;

到这里我们的【wǒ men de】💈配置就【pèi zhì jiù】完成了,接下来启动服【qǐ dòng fú】🚅务♑。

Client

1.添加服务引用

2.添加如下测试代码

运行之【yùn háng zhī】后会发现nginx-1.7.2\conf\下多出♍了一个custom.conf文件【wén jiàn】🍻。

内容为:

到这里我们就🚣测试通【cè shì tōng】过啦,如果想🛒看效果请自行hosts映射【yìng shè】test1.com和⌚test2.com到本地【dào běn dì】IP

为了防止绑定失败我们同时在服务【zài fú wù】🚪的根目录下保🎺存了domains.xml文件【wén jiàn】,域名的【yù míng de】绑定信【bǎng dìng xìn】🤪息也会在此保留【liú】🎁,这样大🏰家就可【jiā jiù kě】以自己💠还原啦。

Daemon Service Source Code

http://files.cnblogs.com/ants/ChunSun.NginxServer.DaemonService.zip

说明:该源码🕎是我精【shì wǒ jīng】简过后的【de】,原来的【de】🙍源码是【yuán mǎ shì】📩基于Rabbit Kernel的【de】,所以精【suǒ yǐ jīng】简后的【de】✉源码没有提供🗃日志等🦐功能的【gōng néng de】支持【zhī chí】,大家可以自行添加。

关键词:IIS,解决方案

阅读本文后您有什么感想? 已有 人给出评价!

  • 0 欢迎喜欢
  • 0 白痴
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙视