我有一个PHP应用程序通过端口80上的apache提供服务.我有一个nodejs应用程序在端口3000上独立运行.我想从PHP生成的客户端代码向nodejs应用程序发出ajax请求.问题是相同的源策略不允许不同的端口,我不能在端口80上运行nodejs和apache.
我理想的做法是让它们从客户端的角度看起来都在端口80上运行.如何设置apache以重新路由/别名/对nodejs应用程序的任何特定请求?
希望有道理.注意:不确定这是否可行,或者我是否以正确的方式进行 - 请接受建议.
我是htaccess的新手.我正在使用Keystone.js,我使用它开发了一个正在侦听端口3000的博客.像这样:
https://localhost:3000
现在一切都很好.但我想要的是我的博客应该在这个网址上运行:
https://localhost/blog
我如何实现这种情况,我提供" https:// localhost/blog ",它应该像" https:// localhost:3000 "一样工作.在这种情况下,URL将保持不变:https:// localhost/blog
另外,我还希望当用户访问此网址时:" https:// localhost:3000 ",它应该重定向到:" https:// localhost/blog ".
我该如何实现这种情况?我想要的只是从URL隐藏端口.
我已经尝试了很多东西可以解决,但它不适合我.像这样的东西:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^blog(.*) http://localhost:3000/$1 [P,L]
好了,现在这个代码对于主页面是完美的,即:https:// localhost/blog,因为我在htaccess中为它添加了一个规则.但问题是所有链接,图像和包含的文件都在我的博客中被破坏了.
现在我使用基本标记来解决这个问题.但它将我的链接转换为这种格式:
http://localhost:3000/contact
http://localhost:3000/help
http://localhost:3000/post
我认为http:// localhost:3000 /是我页面头中的基本标记.你可以看到3000端口再次出现在我不想显示的网址中.它应该是:
http://localhost/blog/contact
http://localhost/blog/help
http://localhost/blog/post
前段时间我在一些流媒体视频教程中找到了这个功能,这样就不需要将整个文件加载到RAM中来提供文件(这样你就可以提供大视频文件而不会因为超出内存容量而崩溃Node.js - 用电影长度的视频文件不难超越,增加内存分配只是一个创可贴解决方案).
var fs = require("fs"), 
    http = require("http"), 
    url = require("url"), 
    path = require("path");
var dirPath = process.cwd();
var videoReqHandler = function(req, res, pathname) {
    var file = dirPath + "/client" + pathname;
    var range = req.headers.range;
    var positions = range.replace(/bytes=/, "").split("-");
    var start = parseInt(positions[0], 10);
    fs.stat(file, function(err, stats) {
        if (err) {
            throw err;
        } else {
            var total = stats.size;
            var end = positions[1] ? parseInt(positions[1], 10) : total - 1;
            var chunksize = (end …我打算用node.js做三个站点.我在网站中有一些常见的模板.我应该在单个node.js实例上运行所有三个站点吗?
我知道'vhost'中间件允许你在单个http服务器上运行多个域.有没有更好的选择呢?
我也有一些静态的html模板,不知道如何在node.js中处理这些?
最后,我想知道这种设置的托管选项?
我在配置具有不同域的两个不同Node.js应用程序时遇到问题.有两个目录
"/abc/" -> express-admin setup (backend) -> admin.abc.com
和
"/xyz/" -> express setup (frontend) -> abc.com
我需要admin.abc.com指向express-admin设置和abc.com来表达设置.我安装了vhost,并且该站点都侦听端口80.
添加了
app.use(vhost('abc.com', app)); // xyz/app.js file
app.use(vhost('admin.abc.com', app)); // abc/app.js file
我的问题:
永远安装,每当我启动这两个应用程序时,第二个始终停止.我尝试为两个应用程序使用不同的端口,但仍然有相同的错误.他们单独运行没有问题.
我认为我的设置对于域名转发来说太复杂了.有更好的建议吗?可能是我有一个主app.js文件,我可以使用它来将域路由到各自的应用程序,而无需使用每个应用程序的app.js.
我有一个 nextjs 项目,希望使用 Docker 和 nginx 运行。
我希望使用在后台连接到 nextjs 的 nginx(只有 nginx 可以与 nextjs 通信,用户需要与 nginx 通信才能与 nextjs 通信)。
假设它是标准的nextjs项目结构和dockerfile内容(下面提供),有没有办法在docker中与nextjs一起使用nginx?
我知道我可以使用 Docker-compose。但我想将其保留在一个 docker 映像下。因为我打算将图像推送到 heroku 虚拟主机。
注意:我正在使用服务器端渲染
docker文件
# Base on offical Node.js Alpine image
FROM node:latest as builder
# Set working directory
WORKDIR /usr/app
# install node-prune (https://github.com/tj/node-prune)
RUN curl -sfL https://install.goreleaser.com/github.com/tj/node-prune.sh | bash -s -- -b /usr/local/bin
# Copy package.json and package-lock.json before other files
# Utilise Docker cache to save re-installing dependencies if unchanged
COPY package.json ./ …今天我第一次安装了NGINX服务器.它工作得很好但我面临一个小问题,服务器的配置与node.js一起工作.
我想在nginx.conf中使用以下逻辑.
问号是可选参数:)可以有0到7个参数.
如果这个设置方案很容易完成,我很抱歉,但我正在与它斗争近3个小时而且我被卡住了.第1步和第2步准备就绪 - 谷歌10倍.
关心丹
nginx和Node.js都有事件循环来处理请求.我把nginx放在Node.js前面,就像这里推荐的那样
仅使用Node.js与使用Apache/Nginx的Node.js
使用此处显示的设置
两个事件循环如何一起玩?两者之间是否存在冲突风险?我想知道因为Nginx可能无法每秒处理与Node.js一样多的事件,反之亦然.例如,如果Nginx每秒可以处理1000个事件但node.js只能处理500个,那么这不会导致问题吗?(我不知道1000,500是否是合理的数量级,你可以纠正我.)
把Apache放在Node.js面前怎么样?Apache没有事件循环.只是线程.所以不会把Apache放在Node.js前面打败目的吗?
在2010年的演讲中,Node.js的创建者Ryan Dahl有望完全摆脱nginx/apache /,让节点直接与互联网对话.你觉得什么时候会成为现实?
nginx 是一个杀手级静态文件服务器.
它可以服务node.js,如在这个例子中,但是以有限的方式.
但nginx是显然无法给代理websockets.
我发现可能有用的唯一方法就是按照本文使用HAProxy前端- 但它是从2011年10月6日开始的.
这必须是一个常见问题,但我找不到一个非常常见的解决方案.
(有关完整的解决方案和详细信息,请参阅https://github.com/bangkok-maco/barebone-node)
ip测试架构:
global
 maxconn 4096
 nbproc 2
 daemon
 # user nobody
 log             127.0.0.1       local1 notice
defaults
 mode http
# listen on 127.0.0.12:80
frontend app
 bind 127.0.0.12:80
 mode tcp
 timeout client 86400000
 default_backend www_backend
 acl is_chat hdr_dom(Host) chat …我想在我的应用程序中在username.domain.com上分享一些用户信息.用户创建帐户后,子域名应该可用.
我发现在这种情况下可能有用的好模块:Express Subdomain
如何正确使用该模块?也许这个模块不是那么有用,我应该使用哪一个?