在http端口80(默认端口)上运行时,Node.js抛出以下错误: -
Error: EACCES, Permission denied
at Server._doListen (net.js:1062:5)
at net.js:1033:14
at Object.lookup (dns.js:132:45)
at Server.listen (net.js:1027:20)
at [object Context]:1:3
at Interface.<anonymous> (repl.js:150:22)
at Interface.emit (events.js:42:17)
at Interface._onLine (readline.js:132:10)
at Interface._line (readline.js:387:8)
at Interface._ttyWrite (readline.js:564:14)
Run Code Online (Sandbox Code Playgroud)
我发现该节点需要具有root访问权限.
通常,我们避免在正常情况下提供root访问权限.在端口80(或端口<1024)上使用它的最佳做法是什么.
这个链接有同样的问题,但它只有一个答案,即PREROUTING.虽然我的解决方案也提供其他方法.
我写这篇文章是为了在一个地方得到所有答案,因为我必须通过其他资源而不是PREROUTING.为什么不在一个地方为所有答案分享知识
我正在运行一个node.js服务器,它将在端口80和其他服务器上提供请求.显然,这需要以root身份运行应用程序(在Linux上).
以这篇文章(http://syskall.com/dont-run-node-dot-js-as-root)为例,很明显有一些简单的方法可以让节点作为非root用户运行,但我想知道是否有人对所建议的不同方法的优点/缺点有任何看法:
代码:在侦听端口80建立后,使用setuid()从root用户下载到非特权用户.
使用某种代理服务器将请求重定向到端口> 1024(因此不需要节点以root身份运行)
使用IP表转发到另一个端口(同上节点不会以root身份运行)
谢谢
我正在尝试创建 https 服务器以通过节点 js 测试套接字 io。根据这个页面
openssl genrsa -out privatekey.pem 2048
openssl req -new -key privatekey.pem -out certrequest.csr
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
Run Code Online (Sandbox Code Playgroud)
我创建了privatekey.pem,certificate.pem这是我的代码:
var express = require('express');
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('privatekey.pem'),
cert: fs.readFileSync('certificate.pem')
};
var app = express();
var server = https.createServer(options, app).listen(443);
var io = require('socket.io').listen(server,()=>{
console.log('listen to https');
});
io.on('connection', function (socket) {
console.log(' user connected');
socket.on('disconnect', function …Run Code Online (Sandbox Code Playgroud) 我使用 127.0.0.1:4200 做 ng serve 没有问题。
但是今天,当我做服务时,发生了一个未处理的异常:listen EACCES: permission denied 127.0.0.1:4200
有没有办法永久解决这个问题?
如何在不同的端口上运行meteor,例如在端口80上.我尝试使用meteor --port 80,但是我收到了这个错误Error: listen EACCES
请帮帮我.
const httpsOptions = {
key: FS.readFileSync("/etc/letsencrypt/live/site/privkey.pem"),
cert: FS.readFileSync("/etc/letsencrypt/live/site/fullchain.pem")
};
EACCES: permission denied
Run Code Online (Sandbox Code Playgroud)
尝试使用选项设置 HTTPS 服务器。在设置选项以传递给HttpS.createServer(httpsOptions,App);. 我从letsencrypt 获得了证书,但是尝试运行服务器会导致权限被拒绝错误。为 HTTPS 服务器加载证书和密钥文件的正确方法是什么?
我有一个运行IIS的Windows服务器和带有socket.io的node.js,用于我正在开发的交互式白板应用程序.我希望IIS网站和node.js服务器都在端口80上侦听,但绑定到不同的IP地址.
根据我的发现,socket.io无法指定IP地址.可以通过创建http服务器实例来克服此限制.我是socket.io和node.js的新手,尝试这样做有点失落.我将包括原始服务器代码(侦听特定端口)以及我尝试在特定IP地址上实例化服务器.
原版的
(function() {
var io;
io = require('socket.io').listen(80);
io.sockets.on('connection', function(socket) {
socket.on('drawClick', function(data) {
socket.broadcast.emit('draw', {
x: data.x,
y: data.y,
type: data.type
});
});
});
}).call(this);
Run Code Online (Sandbox Code Playgroud)
改性
(function() {
var host = "10.70.254.76";
var port = 80;
var http = require("http").createServer();
var io = require("socket.io").listen(http);
http.listen(port, host);
io.sockets.on('connection', function(socket) {
socket.on('drawClick', function(data) {
socket.broadcast.emit('draw', {
x: data.x,
y: data.y,
type: data.type
});
});
});
}).call(this);
Run Code Online (Sandbox Code Playgroud)
我得到错误:在启动修改后的代码时听EACCES
我在连接docker容器时遇到问题,服务器返回空响应,但配置似乎正确。
当我使用docker-compose up命令时,一切似乎都可以正常工作,但是我收到来自服务器的空响应。
我仔细检查了端口映射,但是我什么都没注意到。
这是撰写文件
version: '3'
services:
authapi:
build:
dockerfile: ./docker/Dockerfile.dev
context: .
restart: always
volumes:
- .:/usr/src/auth
- /usr/src/auth/node_modules
environment:
FBAPPID: ${FBAPPID}
FBAPPSECRET: ${FBAPPSECRET}
GOOGLEAPPID: ${GOOGLEAPPID}
GOOGLEAPPSECRET: ${GOOGLEAPPSECRET}
GITHUBAPPID: ${GITHUBAPPID}
GITHUBAPPSECRET: ${GITHUBAPPSECRET}
ports:
- ${PORT}:${PORT}
command:
- sh
- -c
- sleep 20 && npm run start:dev
depends_on:
- psql
psql:
image: postgres:10-alpine
ports:
- 5432:5432
environment:
POSTGRES_USER: ${PG_USER}
POSTGRES_PASSWORD: ${PG_PASSWORD}
POSTGRES_DB: ${PG_DB}
volumes:
- ./pg-data:/var/lib/postgresql/data
Run Code Online (Sandbox Code Playgroud)
Docker文件
FROM node:10-alpine
WORKDIR /usr/src/auth
COPY ./package.json .
RUN npm install
COPY …Run Code Online (Sandbox Code Playgroud) 我尝试运行后端服务器,但是当我在 cmd 中运行命令时node backend/server.js,出现以下错误:
D:\theshoppingcart>node backend/server.js
events.js:187
throw er; // Unhandled 'error' event
^
Error: listen EACCES: permission denied 8085;
at Server.setupListenHandle [as _listen2] (net.js:1284:19)
at listenInCluster (net.js:1349:12)
at Server.listen (net.js:1448:5)
at Object.<anonymous> (D:\theshoppingcart\backend\server.js:16:8)
at Module._compile (internal/modules/cjs/loader.js:959:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
at Module.load (internal/modules/cjs/loader.js:815:32)
at Function.Module._load (internal/modules/cjs/loader.js:727:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10)
at internal/main/run_main_module.js:17:11
Emitted 'error' event on Server instance at:
at emitErrorNT (net.js:1328:8)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
code: 'EACCES',
errno: 'EACCES',
syscall: 'listen',
address: '8085;',
port: -1
}
Run Code Online (Sandbox Code Playgroud)
这是我的 backend/server.js …
port backend web-development-server permission-denied node.js