Vuejs 应用程序显示无效主机 header 错误循环
Vuejs app showing Invalid host header error loop
我是 运行 自己的开发服务器上的 vuejs 应用程序,现在我可以通过 public 机器 IP 访问该站点,但是在使用 nginx 将其指向域后显示错误在控制台中循环
error in console
无效主机header
[WDS] 断开连接!
因此,脚本、样式注入和自动重新加载无法正常工作。
开发服务器配置
dev: {
assetsSubDirectory: "static",
assetsPublicPath: "/",
disableHostCheck: true,
host: "0.0.0.0", // '192.168.2.39',//can be overwritten by
process.env.HOST
port: 8080,
autoOpenBrowser: false,
errorOverlay: false,
notifyOnErrors: false,
poll: true,
devtool: "cheap-module-source-map",
cacheBusting: true,
cssSourceMap: true
},
域的 nginx 配置
server
{
listen 80 ;
listen [::]:80;
server_name prajin.prakash.com;
location / {
proxy_pass http://localhost:8081;
}
}
我相信你需要像这样更改 nginX 配置
server {
server_name prajin.prakash.com;
listen 80;
listen [::]:80;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
}
location /sockjs-node {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
}
}
编辑:
为 WebSocket 和普通请求添加了单独的代理。
对不起,是我的失误,我忘记在
中添加 disableHostCheck 变量
build/webpack.dev.conf.js
添加以下内容解决了我的问题
disableHostCheck: config.dev.disableHostCheck,
我相信你需要改变vue.config.js
module.exports = {
devServer: {
disableHostCheck: true
}
}
一般不建议disableHostCheck: true
(因为这可能会导致安全问题),除非您了解并接受风险。
请改为尝试如下设置 webpack 配置:
在 vue.config.js 的应用程序根目录中添加
module.exports = {
devServer: {
public: 'subdomain.domain.ext:port'
}
};
注意:对于 vuejs + nginx 上的应用 运行
我的配置在:projects/vue-try/node_modules/@vue/cli-service/lib/options.js
第 130 行+
开发服务器:{
禁用主机检查:真,
主机:'0.0.0.0',
https: 假的
}
2022 年 2 月更新:
在项目根目录下创建vue.config.js
:
然后,将下面的代码粘贴到 vue.config.js
:
module.exports = {
devServer: {
disableHostCheck: true
}
}
*不要忘记重启服务器,否则更改不会反映出来。
在webpack-dev-server@v3:
module.exports = {
devServer: {
disableHostCheck: true,
},
};
在webpack-dev-server@v4中,选项disableHostCheck
被移除,使用allowedHosts
代替:
module.exports = {
devServer: {
// 'auto' | 'all' [string] here
allowedHosts: 'all',
},
};
在此处查看文档 https://webpack.js.org/configuration/dev-server/#devserverallowedhosts
我是 运行 自己的开发服务器上的 vuejs 应用程序,现在我可以通过 public 机器 IP 访问该站点,但是在使用 nginx 将其指向域后显示错误在控制台中循环
error in console
无效主机header [WDS] 断开连接!
因此,脚本、样式注入和自动重新加载无法正常工作。
开发服务器配置
dev: {
assetsSubDirectory: "static",
assetsPublicPath: "/",
disableHostCheck: true,
host: "0.0.0.0", // '192.168.2.39',//can be overwritten by
process.env.HOST
port: 8080,
autoOpenBrowser: false,
errorOverlay: false,
notifyOnErrors: false,
poll: true,
devtool: "cheap-module-source-map",
cacheBusting: true,
cssSourceMap: true
},
域的 nginx 配置
server
{
listen 80 ;
listen [::]:80;
server_name prajin.prakash.com;
location / {
proxy_pass http://localhost:8081;
}
}
我相信你需要像这样更改 nginX 配置
server {
server_name prajin.prakash.com;
listen 80;
listen [::]:80;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
}
location /sockjs-node {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
}
}
编辑:
为 WebSocket 和普通请求添加了单独的代理。
对不起,是我的失误,我忘记在
中添加 disableHostCheck 变量build/webpack.dev.conf.js
添加以下内容解决了我的问题
disableHostCheck: config.dev.disableHostCheck,
我相信你需要改变vue.config.js
module.exports = {
devServer: {
disableHostCheck: true
}
}
一般不建议disableHostCheck: true
(因为这可能会导致安全问题),除非您了解并接受风险。
请改为尝试如下设置 webpack 配置:
在 vue.config.js 的应用程序根目录中添加
module.exports = {
devServer: {
public: 'subdomain.domain.ext:port'
}
};
注意:对于 vuejs + nginx 上的应用 运行
我的配置在:projects/vue-try/node_modules/@vue/cli-service/lib/options.js
第 130 行+
开发服务器:{ 禁用主机检查:真, 主机:'0.0.0.0', https: 假的 }
2022 年 2 月更新:
在项目根目录下创建vue.config.js
:
然后,将下面的代码粘贴到 vue.config.js
:
module.exports = {
devServer: {
disableHostCheck: true
}
}
*不要忘记重启服务器,否则更改不会反映出来。
在webpack-dev-server@v3:
module.exports = {
devServer: {
disableHostCheck: true,
},
};
在webpack-dev-server@v4中,选项disableHostCheck
被移除,使用allowedHosts
代替:
module.exports = {
devServer: {
// 'auto' | 'all' [string] here
allowedHosts: 'all',
},
};
在此处查看文档 https://webpack.js.org/configuration/dev-server/#devserverallowedhosts