小编Kit*_*Kit的帖子

如何在端口80上运行Node.js?

我的目标是在端口80上运行Node.js.这是因为我发现node.js被阻止某些不允许来自任何其他端口的流量的网络.

看来最好的方法是通过Node.js代理Apache.我曾尝试使用node-http-proxy来做到这一点,但我没有运气.

我正在使用的代码在这里:

var util = require('util'),
    http = require('http'),
    httpProxy = require('http-proxy');

httpProxy.createServer(9000, 'localhost').listen(80);

http.createServer(function (req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
  res.end();
}).listen(9000);
Run Code Online (Sandbox Code Playgroud)

但我不断收到端口80的错误"正在使用的地址".我一定是做错了.

如何使用node-http-proxy通过node.js代理Apache?这会让我在端口80上运行node.js吗?node-http-proxy是实现这一目标的最佳方式吗?

谢谢.

apache proxy websocket node.js

65
推荐指数
6
解决办法
7万
查看次数

为'apache'用户生成SSH密钥

如何在Linux中为'apache'用户添加SSH密钥?

背景

我试图向github添加服务挂钩,以便在我推送到我的仓库后通知URL.我有以下php页面设置:

<?php `git pull origin master`;  
Run Code Online (Sandbox Code Playgroud)

但是我得到以下输出:

sh: git: Permission denied
Run Code Online (Sandbox Code Playgroud)

这是因为我为github访问生成的密钥是由我的"root"用户生成的.但是,当我从php中执行命令时,运行它的是'apache'用户.

因此,密钥不对应,并且拒绝许可.

由于我无法从终端切换用户生成密钥为'apache',我不太清楚该怎么做.谁有人建议解决方案?

php apache git github ssh-keys

39
推荐指数
4
解决办法
5万
查看次数

Chrome和Safari恢复为xhr-polling而不是带socket.io的websockets

我有websockets和socket.io的问题.当我尝试使用socket.io连接到我的节点服务器时,它最初使用websockets进行连接,但之后不久将恢复为jsonp-polling.

这是我连接时节点服务器的输出:

8 Jun 07:01:15 - Initializing client with transport "websocket"
8 Jun 07:01:19 - Initializing client with transport "jsonp-polling"
8 Jun 07:01:19 - Client 16630339180119336 connected
Run Code Online (Sandbox Code Playgroud)

这种情况发生在Chrome和Safari中.我已经更新到最新的socket.io版本0.6.17并且正在运行节点0.4.7.

我已经尝试删除我在github和SO上建议的cookie和缓存,但问题仍然存在.此外,当我尝试强制使用websockets时,它永远不会与会话ID完全连接.

有没有人有任何想法?

javascript websocket node.js socket.io

22
推荐指数
1
解决办法
4132
查看次数

Node.js HTTPS安全错误

我正在尝试创建一个安全的node.js服务器,以便与使用ssl(https)的网站一起使用.

const crypto = require('crypto'),
      fs = require("fs"),
      http = require("http");

var privateKey = fs.readFileSync('/home/privatekey.pem');
var certificate = fs.readFileSync('/home/certificate.pem');

var credentials = crypto.createCredentials({key: privateKey.toString(), cert: certificate.toString()});

var handler = function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
};

var server = http.createServer();
server.setSecure(credentials);
server.addListener("request", handler);
server.listen(8084);
Run Code Online (Sandbox Code Playgroud)

但是,当我启动我的服务器时,我收到以下错误:

node.js:116
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
TypeError: Object #<Server> has no method 'setSecure'
    at Object.<anonymous> (/home/meshdev/public_html/js/node/server/test.js:16:8)
    at Module._compile (module.js:380:26)
    at Object..js (module.js:386:10)
    at Module.load (module.js:312:31) …
Run Code Online (Sandbox Code Playgroud)

https node.js socket.io

15
推荐指数
1
解决办法
2万
查看次数

htaccess RewriteBase

我的根目录中有两个目录:/dev/live.

这些目录中的所有内容都有相对路径,如/css/style.css/js/home.js.

我希望能够使用htaccess更改根目录,以便相对路径变为/live/css/style.css等或/dev/css/style.css取决于我使用的站点的版本.

我尝试在/live目录中的.htaccess中使用以下代码:

RewriteEngine on
RewriteBase /live/
Run Code Online (Sandbox Code Playgroud)

我也试过用RewriteBase /public_html/live/.

但是,内容路径仍然http://domain.com/css/style.csshttp://domain.com/live/css/style.css在我查看网站时.

有没有人有任何想法?

谢谢.

编辑>>对不起我应该解释我的根htaccess有以下规则指向两个目录:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} ^((www\.)?([a-z]+)\.)domain\.com [NC]
RewriteRule ^((www\.)?([a-z]+)\.)domain\.us$ /live/index.php?tag=%3 [L,P]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} ^dev.((www\.)?([a-z]+)\.)domain\.com [NC]
RewriteRule ^((www\.)?([a-z]+)\.)domain\.us$ /live/index.php?tag=%3 [L,P]
Run Code Online (Sandbox Code Playgroud)

php .htaccess

8
推荐指数
1
解决办法
4万
查看次数

Apache代理错误

我在服务器上间歇性地收到以下错误:

**Proxy Error** 
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /.
Reason: Error reading from remote server
Run Code Online (Sandbox Code Playgroud)

错误日志显示以下内容:

[Sun Feb 06 03:06:00 2011] [error] [client 82.43.154.57] proxy: Error reading from remote server returned by /login, referer: https://demo.XXXXX.us/
[Sun Feb 06 03:06:30 2011] [error] [client 82.43.154.57] (70007)The timeout specified has expired: proxy: error reading status line from remote server XXXXX.us
[Sun Feb 06 03:06:30 2011] [error] [client 82.43.154.57] …
Run Code Online (Sandbox Code Playgroud)

apache proxy

7
推荐指数
1
解决办法
2万
查看次数

通过电子邮件回复主题

我正在编写一个应用程序,让用户直接从他们的电子邮件回复帖子或帖子,类似于Facebook.用户已经可以通过电子邮件添加新帖子,并且工作正常.

生成新帖子时,会向特定用户发送电子邮件警报,并创建一个唯一的回复地址,其中包含带有原始帖子/帖子ID的编码字符串.这工作正常.发送电子邮件,系统使用唯一的回复地址获取回复.

我的问题是尝试将电子邮件中的评论/回复与下面引用的原始电子邮件隔离开来.以下是收到的电子邮件正文的示例:

reply text

(Origional Email Header)On 10 March 2011 16:35, Example SIte 
<pwKVb1BVUITY4Ai-fKR8ioPrR8Zki9cKBmAA0njXi8Y@example.us= > wrote:
Run Code Online (Sandbox Code Playgroud)

我曾想过使用识别字符或字符串,但每个电子邮件提供商在回复中以不同方式显示原始电子邮件.

有没有人有任何想法如何我从原始电子邮件的标题和正文中隔离回复文本?

谢谢,

克里斯.

php email

7
推荐指数
1
解决办法
1506
查看次数

从命令行运行PHP

我正在尝试管理等待ffmpeg处理的文件队列.使用CRON运行页面,该CRON运行通过等待处理的文件数据库.然后该页面构建命令并使用它们将它们发送到命令行exec().

但是,当从命令行或CRON运行PHP页面时,它运行exec()OK,但不返回PHP页面继续更新数据库和其他功能.

例:

<?php
$cmd = "ffmpeg inpupt.mpg output.m4v";

exec($cmd . ' 2>&1', $output, $return);

//Page continues...but not executed
$update = mysql_query("UPDATE.....");
?>
Run Code Online (Sandbox Code Playgroud)

从命令行运行此页面时,将使用该命令运行,exec()但不会执行页面的其余部分.我认为问题可能是我exec()在命令行运行的页面中运行命令.

是否可以从命令行中完整地运行PHP页面exec()

或者有更好的方法吗?

谢谢.

php cron command-line ffmpeg

7
推荐指数
1
解决办法
695
查看次数

命令行PHP mysql_connect()错误

一旦php exec命令完成,我在命令行运行一个php页面来更新mysql数据库.这一直很好用.

但是,我刚刚重新安装了我的服务器,现在当我在命令行上运行它时脚本返回以下错误:

Fatal error: Call to undefined function mysql_connect() 
Run Code Online (Sandbox Code Playgroud)

脚本在浏览器中运行正常,这意味着安装了mysql.如何在PHP中启用mysql从命令行运行?

非常感谢.

php mysql command-line

6
推荐指数
1
解决办法
1万
查看次数

使用Javascript创建签名的S3 URL

我正在尝试使用Javascript和NodeJS创建签名的S3 URL.我使用过 这个 规范.

var crypto     = require('crypto'),
    date       = 1331290899,
    resource   = '/myfile.txt',
    awskey     = "XXXX",
    awssecret  = "XXXX";

var stringToSign ='GET\n\n\n' + date + '\n\n' + resource;

var sig = encodeURIComponent(crypto.createHmac('sha1', awssecret).update(stringToSign ).digest('base64'));

var url = "https://s3-eu-west-1.amazonaws.com/mybucket" +
       resource + "?AWSAccessKeyId=" + awskey + "&Expires="+ date +  
      "&Signature="+ sig
Run Code Online (Sandbox Code Playgroud)

这会创建一个类似于此的URL:

https://s3-eu-west-1.amazonaws.com/mybucket/test.txt?AWSAccessKeyId=XXXXXX&Expires=1331290899&Signature=EciGxdQ1uOqgFDCRon4vPqTiCLc%3D
Run Code Online (Sandbox Code Playgroud)

但是,访问它时收到以下错误:

SignatureDoesNotMatch

The request signature we calculated does not match the signature you provided. 
Check your key and signing method.
Run Code Online (Sandbox Code Playgroud)

创建签名时我做错了什么?

编辑 - 与诺克斯一起尝试

我现在正在尝试使用Knox生成签名的URL.我需要添加带有强制下载请求的标头.我编辑了以下内容:

添加amazonHeaders: …

javascript encryption amazon-s3 amazon-web-services

6
推荐指数
1
解决办法
7363
查看次数