我的 Git 目录中有两个并行运行的节点项目。
相同版本的节点 14.5,根中相同的 pem 密钥,一切都相同。然而,一个节点进程能够签署我的 base64 pem 密钥,而另一个节点进程则不能。我可以删除 base64 设置,但仍然有一个进程处理符号,而另一个则不处理。
我从 sign.sign() 方法收到此错误消息。
错误:25066067:DSO 支持例程:dlfcn_load:无法加载共享库
代码如下:
const crypto = require('crypto');
var policy = {
Statement: [
{
Resource: 'https://dev.geolytix.io/mapp/workspace.json',
Condition: { DateLessThan: { 'AWS:EpochTime': Date.now() + 60 * 60 * 1000 } },
},
],
};
var sign = crypto.createSign('RSA-SHA1');
sign.write(JSON.stringify(policy));
var pem = String(readFileSync(join(__dirname, `./mykey.pem`)))
let signature = sign.sign(pem, 'base64')
Run Code Online (Sandbox Code Playgroud)
我注意到将操作系统更新到 Ubuntu 22.04 后出现了问题。
我已清除 openssl(版本 3)并从源代码手动安装 openssl 1.1.1o。https://fedingo.com/how-to-install-openssl-in-ubuntu/ 不幸的是,这将删除其他需要较新版本 OpenSSL 的应用程序,例如 Chrome。
我现在可以手动构建和安装 openssl 3.0.3。加密模块仍然失败。
有时我想从我的节点应用程序通过邮件发送合格的 URL。或者我想设置幻像页面对象的内容。
我在部署设置中获得了这样的完整 URL。
'http://' + req.hostname + '/myapp'
Run Code Online (Sandbox Code Playgroud)
然而,在开发机器上,这通常会产生:
http://localhost/myapp而不是http://localhost:3000/myapp
我知道如何获取端口,但我不想使用类似的东西:
'http://' + req.hostname + ':' + port + '/myapp'
Run Code Online (Sandbox Code Playgroud)
在代理后面部署时会产生这样的废话。
如果应用程序在代理外部运行,是否有一种智能方法可以从请求对象获取带有端口的主机名?
我正在尝试将 puppeteer 与本地脚本文件一起使用。
当我托管文件并使用addScriptTag()和本地主机地址时,我会加载脚本文件。这并不理想。我需要直接从路径使用本地文件。在本例中,当前工作目录是 /maps。我在 addScriptTag() 函数的选项中将相对路径设置为路径,但在这个阶段代码对我来说只是变黑了。没有错误,也没有介入任何事情。
console.log(`Current directory: ${process.cwd()}`);
// C:\Users\dbauszus\Documents\GitHub\maps
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setContent(jsr.templates('./views/report.html').render(), {waitUntil: 'load'});
// works with an url to the same file.
// await page.addScriptTag('http://localhost:3000/maps/js/build/report_bundle.js');
// path for js file on windows C:\Users\dbauszus\Documents\GitHub\maps\public\js\build\report_bundle.js
await page.addScriptTag({path: 'public\\js\\build\\report_bundle.js'});
await page.screenshot({path: 'example.png'});
await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)
任何帮助都会受到欢迎,因为我发现木偶文档越来越令人沮丧,而且到目前为止还没有任何工作示例。
我有几个应用程序服务器(通过PM2)运行多个Node应用程序。
我有一台NGINX服务器,该服务器具有域的SSL证书和Node应用程序的反向代理。
在NGINX配置文件中,我使用如下的位置块设置域:
server {
listen 443 ssl;
server_name
geolytix.xyz;
ssl_certificate /etc/letsencrypt/live/geolytix.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/geolytix.xyz/privkey.pem;
location /demo {
proxy_pass http://159.65.61.61:3000/demo;
proxy_set_header HOST $host;
proxy_buffering off;
}
location /now {
proxy_pass https://xyz-heigvbokgr.now.sh/now;
proxy_set_header HOST $host;
proxy_buffering off;
}
}
Run Code Online (Sandbox Code Playgroud)
这仅适用于应用程序服务器。Zeit Now部署的代理产生错误的网关。如果我转到部署的Zeit Now地址,则应用程序本身将按预期工作。
有人知道我是否可能会缺少一些设置以代理Zeit Now吗?
我正在使用以下代码在 openlayers 3 上尝试 wfs-t:
var formatWFS = new ol.format.WFS();
var formatGML = new ol.format.GML({
featureNS: 'http://argeomatica.com',
featureType: 'playa_sample',
srsName: 'EPSG:3857'
});
var transactWFS = function(p,f) {
switch(p) {
case 'insert':
node = formatWFS.writeTransaction([f],null,null,formatGML);
break;
case 'update':
node = formatWFS.writeTransaction(null,[f],null,formatGML);
break;
case 'delete':
node = formatWFS.writeTransaction(null,null,[f],formatGML);
break;
}
s = new XMLSerializer();
str = s.serializeToString(node);
$.ajax('https://gsx.geolytix.net/geoserver/geolytix_wfs',{
type: 'POST',
dataType: 'xml',
processData: false,
contentType: 'text/xml',
data: str
}).done();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行更新事务(ajax 调用)时,它将几何列作为“几何”发送。我需要将其更改为大写“GEOM”:
...
<Property>
<Name>geometry</Name>
Run Code Online (Sandbox Code Playgroud)
...
应该: ...
<Property>
<Name>GEOM</Name>
Run Code Online (Sandbox Code Playgroud)
...
我尝试使用我发现的隐藏属性(geometryName_)设置该功能: …
我完全陷入了一种情况,即我想在一台服务器上拥有多个节点应用程序。通过在不同端口上运行应用程序,我可以正常工作。我可以通过输入带有端口的 IP 地址来访问应用程序。
我想通过使用不同的子目录从我的 nginx 服务器代理应用程序,如下所示:
my.domain
location /app1 {
proxy_pass http://10.131.6.181:3001;
}
location /app2 {
proxy_pass http://10.131.6.181:3002;
}
Run Code Online (Sandbox Code Playgroud)
这样做我不得不将所有快速路由移动到 /app1 的 application1。这有效,但现在我被静态文件困住了。
我现在可以使用http://10.131.6.181:3001/app1访问应用程序,这很棒,但是通过http://my.domain/app1没有加载静态文件。
静态文件可以直接访问http://10.131.6.181:3001/css但不能通过代理http://my.domain/css
理想情况下,我希望将应用程序放在不同的端口上,而没有快速路由中的子目录,而只有代理中的子目录。在过去的 5 个小时里,我试图将头穿过墙壁,但没有取得任何成果。
现在,如果至少可以通过 nginx 代理获取静态文件,我会很高兴。