路由Meteor/React应用程序,给它一个普通的HTML ;主页

路由Meteor/React应用程序,给它一个普通的HTML ;主页,meteor,routing,nginx-reverse-proxy,Meteor,Routing,Nginx Reverse Proxy,我想用Meteor和React来服务一个网站,但我希望默认的主页是普通的HTML。像这样: https://meteor.example.com/ =>没有JavaScript的HTML页面 https://meteor.example.com/meteor/ =>全反应流星体验 我知道我可以在/public文件夹中放置一个普通index.html页面,但是它需要被指定为https://meteor.example.com/index.html 我还没有找到一个教程来解决这个特殊情

我想用Meteor和React来服务一个网站,但我希望默认的主页是普通的HTML。像这样:

https://meteor.example.com/        =>没有JavaScript的HTML页面
https://meteor.example.com/meteor/ =>全反应流星体验

我知道我可以在
/public
文件夹中放置一个普通index.html页面,但是它需要被指定为
https://meteor.example.com/index.html


我还没有找到一个教程来解决这个特殊情况。

我找到了一个简单的解决方案,它不需要对Meteor应用程序进行任何更改。我正在使用nginx为流星网站服务。我让应用程序在本地端口上运行,并在nginx中设置代理规则:

server {  
  listen 80;

  server_name example.com;
  charset utf-8;

  location ~ /(.+) {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }
}
据我所知,这会将url请求传递给Meteor应用程序。如果
public/
文件夹中有
index.html
文件,则当请求
http://example.com/

(如果我像最初那样使用
location/
而不是
location~/(.+)
,那么请求
http://example.com/
被视为Meteor对默认页面的请求。)

部署

对于生产,我使用

meteor build --server-only ../example-package
。。。我将其上传到服务器并解压缩。然后,我将
cd
放入
bundle/programs/server
并以运行应用程序的用户身份运行
npm install--production
。然后,我将文件夹添加为
bundle/tmp/
bundle/public/
,并将我的静态
index.html
文件以及它需要的所有CSS和其他文件放在
public/
文件夹中


目前我使用的是导出根URL=http://localhost &&export PORT=3000&&node main.js启动该应用程序,但我计划在完成所有正确的步骤后立即使用a。

我找到了一个简单的解决方案,它不需要对Meteor应用程序进行任何更改。我正在使用nginx为流星网站服务。我让应用程序在本地端口上运行,并在nginx中设置代理规则:

server {  
  listen 80;

  server_name example.com;
  charset utf-8;

  location ~ /(.+) {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }
}
据我所知,这会将url请求传递给Meteor应用程序。如果
public/
文件夹中有
index.html
文件,则当请求
http://example.com/

(如果我像最初那样使用
location/
而不是
location~/(.+)
,那么请求
http://example.com/
被视为Meteor对默认页面的请求。)

部署

对于生产,我使用

meteor build --server-only ../example-package
。。。我将其上传到服务器并解压缩。然后,我将
cd
放入
bundle/programs/server
并以运行应用程序的用户身份运行
npm install--production
。然后,我将文件夹添加为
bundle/tmp/
bundle/public/
,并将我的静态
index.html
文件以及它需要的所有CSS和其他文件放在
public/
文件夹中


目前我使用的是导出根URL=http://localhost &&export PORT=3000&&node main.js启动该应用程序,但我计划在完成所有正确的步骤后立即使用a。

下面是使用with的示例 下面的代码将进入仅服务器端的文件中,例如meteor项目中的/server/main.js

WebApp.connectHandlers.use('/home', (req, res, next) => {
    res.writeHead(200, {'Content-Type': 'text/html'});

    const html = Assets.getText('home.html');

    res.end(html);
});

下面是一个使用with的示例 下面的代码将进入仅服务器端的文件中,例如meteor项目中的/server/main.js

WebApp.connectHandlers.use('/home', (req, res, next) => {
    res.writeHead(200, {'Content-Type': 'text/html'});

    const html = Assets.getText('home.html');

    res.end(html);
});

您是否考虑过使用WebApp定义服务器端路由以提供静态页面@这看起来很有希望,但是我没有看到关于WebApp代码应该在哪里的信息put@JamesNewton
WebApp
包使用类似于快速路线的@您想为
/
路线提供一个最小的
WebApp
示例吗?如果没有,我可以提供一个。@Jankapunkt一个关于
/
路由的最小
WebApp
示例就是我要寻找的答案。很抱歉耽搁了,我添加了一个简单的示例来帮助您。您是否考虑过使用WebApp定义服务器端路由来提供静态页面@这看起来很有希望,但是我没有看到关于WebApp代码应该在哪里的信息put@JamesNewton
WebApp
包使用类似于快速路线的@您想为
/
路线提供一个最小的
WebApp
示例吗?如果没有,我可以提供一个。@Jankapunkt一个关于
/
路线的最小
WebApp
示例将是我要寻找的答案。对于延迟,我已经添加了一个简单的示例来帮助您。