在IIS上托管Nuxt.js Web应用程序的正确方法是什么?

sg3maiej  于 2023-02-16  发布在  其他
关注(0)|答案(2)|浏览(453)

我在Windows中使用IIS来运行几个网页服务器。这次,我学习了Nuxt.js。使用“npm run build”命令构建一个用Nuxt.js创建的项目。我知道,如果您进入该文件夹并执行“npm run dev”,服务器将在端口3000上打开。此时,http://example.com:3000我希望通过“http://example.com”启动服务,而不是通过Web浏览器上的“www.example.com”启动服务。我该如何操作?
1.有没有办法在IIS管理器中设置它?
1.如果没有,我们是否应该考虑使用新的Web服务器来代替IIS?
1.如果没有,有没有办法在Nuxt.js中设置它?
我尝试了IIS管理器中的HTTP重定向功能,但无法获得所需的结果。

f3temu5u

f3temu5u1#

如果要通过在浏览器地址栏中输入"http://example.com"来访问端口3000上的网站,则可以通过IIS反向代理完成此操作。
首先,您需要在IIS上安装URL Rewrite moduleARR module
然后需要双击服务器级的应用请求路由缓存,在右侧树节点选择“服务器代理设置”,勾选“启用代理”并应用。
根据您的描述,您的IIS上需要有两个网站,一个是默认网站(端口80),另一个是您部署到IIS上的应用网站(端口3000),接下来您需要在默认网站上创建重写规则,如下所示:

<rewrite>
    <rules>
        <rule name="test" stopProcessing="true">
            <match url="(.*)" />
            <action type="Rewrite" url="http://example.com:3000/{R:1}" />
        </rule>
    </rules>
</rewrite>

通过上述方法,您可以通过URL访问应用程序:"http://example.com" .

bvhaajcl

bvhaajcl2#

使用HttpPlatformHandler,您可以轻松地在IIS上托管Nuxt.js Web应用程序,但需要对项目进行以下更改:

新版本2.x

The official guide to host Nuxt 2.x for Azure App Service (Windows)示出了一般提示,
1.创建服务器\index.js。
1.修改nuxt.config.js。
但是它错过了重要的步骤,

  • 必须添加expressnuxt-start作为依赖项(检查package.json)。
  • const nuxt = await loadNuxt(isDev ? 'dev' : 'start')简单地更改为const nuxt = await loadNuxt('start'),因为isDev在任何地方都没有定义。

那么web.config应该类似于,

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
        <httpPlatform stdoutLogEnabled="true" stdoutLogFile=".\node.log" startupTimeLimit="20" processPath="C:\Users\<user name>\AppData\Roaming\nvm\v16.13.2\node.exe" arguments=".\server\index.js">
            <environmentVariables>
                <environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" />
                <environmentVariable name="NODE_ENV" value="Production" />
            </environmentVariables>
        </httpPlatform>
    </system.webServer>
</configuration>

注意,Nuxt.js指南中提到的iisnode不再维护,只推荐使用HttpPlatformHandler。
请注意,官方指南中的重写规则没有添加,因为最小示例项目不需要它们,但如果需要,您可以为您的项目添加它们。

新版本3.0

简化了步骤,

npx nuxi init test-nuxt
cd test-nuxt
npm install
npm run build

对于web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
        <httpPlatform stdoutLogEnabled="true" stdoutLogFile=".\node.log" startupTimeLimit="20" processPath="C:\Users\<user name>\AppData\Roaming\nvm\v16.13.2\node.exe" arguments=".output\server\index.mjs">
            <environmentVariables>
                <environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" />
                <environmentVariable name="NODE_ENV" value="Production" />
            </environmentVariables>
        </httpPlatform>
    </system.webServer>
</configuration>

参考

相关问题