赞
踩
iis虽然已经有点过时,但不少用户还在用,故总结一下。
如果电脑没有自带iis管理器,打开控制面板->程序->启用或关闭Windows功能,勾选iis安装即可
打开iis,添加网站,物理路径指向前端打包后文件夹
此时浏览器打开http://localhost:3000即可正常访问,但是输入其它路由刷新会404
url重写
功能下载地址:https://www.iis.net/downloads/microsoft/url-rewrite
下载安装后,重启iis后,找到站点,进入URL重写模块,添加空白规则
名称随意,选择与模式匹配、通配符、*
添加两个条件:不是文件,不是目录
最后重写url指向index.html即可
重启站点,刷新不再404
iisnode
功能下载地址:https://github.com/tjanczuk/iisnode/wiki/iisnode-releases
内容为:
<configuration> <system.webServer> <!-- indicates that the hello.js file is a node.js application to be handled by the iisnode module --> <handlers> <add name="iisnode" path="app.js" verb="*" modules="iisnode" /> </handlers> <!-- use URL rewriting to redirect the entire branch of the URL namespace to hello.js node.js application; for example, the following URLs will all be handled by hello.js: http://localhost/node/express/myapp/foo http://localhost/node/express/myapp/bar --> <rewrite> <rules> <rule name="myapp"> <match url="/*" /> <action type="Rewrite" url="app.js" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
// old
app.listen(3001, function () {
console.log("服务器启动成功了端口是:3001")
})
// new
app.listen(process.env.PORT||3001)
前端请求接口地址是:http://localhost:3000/api/test
实际需要转发到:http://localhost:3001/test
Application Request Routing
功能下载地址:https://www.iis.net/downloads/microsoft/application-request-routing
安装好重启iis,打开Application Request Routing,然后点击Server Proxy Settings…,再勾选Enable proxy
回到web站点,添加空白规则,与模式匹配,通配符,*api/*
重写URL,http://127.0.0.1:3001/{R:2},勾选停止处理后续规则
为啥是{R:2},通配符测试,因为我的后台没有api前缀,如果后台有/api可以用{R:0}
api匹配规则,需要置顶,可以点击规则上下移动
至此,重启站点,打开http://localhost:3000/api/test,也能访问
前面说了分离部署,占用两个端口,通过代理转发请求,能不能共用一个端口?
同端口部署,其实就是通过规则匹配到api跳走,但这种方式,不方便前后端单独更新程序,需要整个重启,而且部署时规则匹配容易出现问题,有利有弊,自行选择
文件夹右键属性-安全-编辑-添加用户或组Everyone,勾选所有权限
进入Framework64版本文件夹
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
打开cmd执行unlock:
C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers
cmd执行:
net stop was /y & net start w3svc
或者在web.config中指定node.exe的位置
<iisnode watchedFiles="*.js;node_modules\*;routes\*.js;views\*.jade" nodeProcessCommandLine="C:\Program Files\nodejs\node.exe"/>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。