Articles of 表示

使用Express和nginx反向代理的Vue路由器历史logging模式

我已经configurationnginx将所有请求传递给节点: server { listen 80; server_name domain.tld; 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; } } 在服务器上,我有一个运行Express的Node应用程序,它服务于我的Vue索引文件。 app.get('/', (req, res) => { res.sendFile(`${__dirname}/app/index.html`); }); 我想用Vue路由器来使用HTML5历史logging模式,所以我在路由器设置中设置了mode: 'history' 。 我安装了connect-history-api-fallback并设置它: const history = require('connect-history-api-fallback'); app.use(history()); 如果用户第一次访问http://domain.tld ,路由工作正常。 但是,如果直接访问子路由或页面刷新,我得到一个未发现的错误。 如何更改我的configuration?

如何将我的angular度前端与我的节点/数字海洋上的nginx快速后端分开?

目前和成功,我有一个node.js应用程序,它位于数字海洋服务器上。 我有一个单一的Github回购整个应用程序。 在我的路线中,当某个路线被击中('/')时,我渲染一个具有我的HTML / CSS / Angular的EJS模板。 这工作 – 但不是我想要的。 我想要的是让我的HTML / CSS / Angular完全独立于我的节点后端。 我希望这个前端有自己的Github回购。 我遇到的问题是我发现很难find资源,告诉我如何设置我的应用程序 – 我find的教程教我如何做到这一点,我已经做到了。 我想要的是: 用户input一个url,并且呈现合适的html页面(不使用node / express) 然后,我的angular将会为我所需要的任何东西打我的后端端点 我如何: 在Digital Ocean上设置我的单个IP地址服务器来执行此操作? 我需要做什么特定的静态文件传递?

node&express + nginx具有多个位置

我打算在一个子域下使用express来运行2个节点的应用程序,nginx提供静态文件。 在我使用的两个节点应用中: app.use(express.static(path.join(__dirname))); 我有以下的nginxconfiguration: server { listen 80; server_name sub.domain.com; index index.html; 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; location / { proxy_pass http://localhost:232; } location ~ ^/(dist/|img/|app/|css/) { root /var/www/app/main/; } location /admin { proxy_pass http://localhost:233; rewrite ^/admin /$1 break; } location ~ ^/admin/(dist/|img/|app/|css/) { root /var/www/app/admin/; access_log […]

Angular SEO / NodeJS / PhantomJS – 提供静态HTML文件

我正在实施我自己的PhantomJS解决scheme,以便为search引擎抓取工具提供快照。 我的快照在这里:/ public / snapshots 我的url如下所示: http : //example.com/#!/a/b/c 当一个爬虫来的时候,url的/#!/像这样被转换: http : //example.com/?_escaped_fragment _=/a/b/ c 我想从抓取我的网页之一时,从/ public /快照的静态文件提供给爬虫。 当前解决scheme 我赶上了url的改变,并重写了这个: http://example.com/?_escaped_fragment=/a/b/c (含nginx) 进入这个: http : //example.com/snapshots/a/b/c 它来到我的NodeJS上的路线,根据url参数获取html文件名。 在这种情况下,它将是/snapshots/a/b/c.html 我得到的文件: fs.readFile(file_path, function(err, content) { res.set('Content-Type', 'text/html'); res.send(content); }); 问题 当我将Content-Type设置为HTML时,Angular / Express进行redirect,我的url如下所示: http://example.com/?_escaped_fragment_=/a/b/c#!/ 如果我去这个url,我可以看到正确的/a/b/c.html快照文件,但几毫秒后,我被redirect到我的主页。 问题 如何在不使用Express和Angularredirect的情况下提供静态文件? 如果我从http://example.com/?_escaped_fragment_=/a/b/credirect到http://example.com/snapshots/a/b/c.html ,哪种方法效果不错,search引擎同意这个? 谢谢

在多核服务器上启动多个节点实例的正确方法是什么?

我有一个nodejs应用程序,我想在一个多核(2CPU * 2Cores = 4Cores)服务器上运行。 在阅读了一些关于这个主题的SO线程之后,我决定在4个不同的端口上启动4个独立的节点实例,并使用nginx在它们之间进行负载平衡。 我决定在节点集群上使用这种方法。 现在,这是我的问题。 我真的很感激任何反馈: 在2cpu * 2cores / cpu = 4核心服务器与1cpu * 4cores / cpu = 4core服务器上启动4个节点实例的方式是否有区别。 我不认为有什么区别,但只是想确认。 我有一个conf文件来启动我的服务。 这个conf文件实际上是驻留在/ etc / init中的一个脚本,并启动我的节点应用程序。 我应该从这个1个conf文件启动4个实例,还是应该创build4个conf文件,并为每个conf文件启动一个实例。 再一次,我觉得后一种方法比较好,但是想确认一下。

为两个节点应用程序configurationnginx,在子域上configuration一个

问题 我试图设置nginx,所以我可以让我的域名domain.com运行在端口3000上的一个节点的web应用程序和子域dev.domain.com由端口3001上的第二个节点的web应用程序运行。当我运行此configurationdomain.com连接到正确的端口,但dev.domain.com只是提供一个页面,说服务器无法到达。 编辑:如果我去IP_ADDRESS:3000我得到了与domain.com相同的内容,但如果我去IP_ADDRESS:3001我得到什么应该在dev.domain.com 。 基于这一点,似乎应用程序在正确的端口上运行良好,我只是没有正确路由子域。 码 我直接编辑/etc/nginx/sites-available/default ,所以它有: server { listen 80 default_server; server_name domain domain.com www.domain.com; location / { proxy_pass http://127.0.0.1:3000; } } server { listen 80; server_name dev.domain dev.domain.com www.dev.domain.com; location / { proxy_pass http://127.0.0.1:3001; } } 除了那个文件,其他的都是全新的安装 我的逻辑 我对nginx非常陌生,但是似乎任何对domain.com请求都会被发送到端口3000,并且对dev.domain.com请求将会被发送到3001。 任何帮助或批评,我已经做了迄今为止将不胜感激!

在使用nginx +乘客时,如何查看节点快速应用程序中的console.log输出

目前正在使用nginx客服来制作快速应用程序。 我可以从nginx获取error.log和access.log。 但是我怎么能看到代码中设置的console.log输出呢?

使用nginx表示js应用程序 – 服务子文件夹时与静态文件发生冲突

upstream app { server localhost:3000; } server { … # If I comment this location out, images are displayed on the website location ~* \.(?:jpg|jpeg|png|gif|swf|xml|txt|css|js)$ { expires 6004800; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } … location /app { alias /path/to/app/public/; try_files $uri $uri @app; } location @app { rewrite /app(.*) $1 break; […]

如何为Ember.js + Express设置开发环境

我正在将Ember.js应用程序和Express REST API分成两个不同的项目。 我认为这样做会更清洁。 在此之前,我的Express应用程序既提供REST端点,也提供所有静态文件,如index.html和app.js 但是现在,ember-cli负责提供静态文件,Express应用程序处理authentication+ REST。 我遇到的最后一个问题是我现在有两个不同的端口:ember-cli使用http://localhost:4200并且使用http://localhost:3333 。 当我通过身份validation从Express获取会话cookie时,由于相同的源策略,它永远不会被发送到后续请求(请参阅: 如何使用jQuery在不同的端口上发送AJAX请求? )。 现在,如果我理解正确,我有两个解决scheme: Setup Express来支持JSONP,并确保Ember也使用它 安装一个本地的Nginx或Apache并设置一个代理通行证 第一个解决scheme是不好的,因为部署后,两个应用程序将使用相同的域/端口。 第二个解决scheme可能会工作,但要求开发人员安装本地Web服务器来运行应用程序似乎有点荒谬。 我相信你们之前很多人都遇到过这个问题。 你会build议如何简化开发? 谢谢!

如何在一个VPS上托pipe3个不同域的3个节点的应用程序?

我一直在试图在一个数字海洋液滴上的不同域上设置几个Node应用程序。 我跟随主机多Node.js应用程序在一个单一的VPS与nginx,永远和crontab文章完全。 我有正确的指向域和Alogging集。 我似乎无法让应用程序运行(永远)除了默认的快速3000以外的任何其他端口。 我改变了Nginx的设置,像这样问: 我取消了注释server_names_hash_bucket_size 64; (就像它说的) 我为应用程序创build了/etc/nginx/conf.d/example.com.conf文件(它们是不同的域,我把1放在3000端口,另一个放在4000端口)。 例: server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:{YOUR_PORT}; 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; } } 我不明白当Nginx运行应用程序和永远是什么时候的区别? “npm start”在哪里起作用? 有多less潜在的服务器在同一时间工作? 我似乎无法一次运行多个应用程序。 我可以弄清楚如何正确分配一个节点应用程序文件夹到一个端口,并永久保持它永远活着。