我有一個在端口3000
上運行的node.js應用程序。我將它部署在亞馬遜網絡服務(ec2
)上,並在那裏工作。我server.js
文件說:我目前在端口3000上運行我的amazon ec2實例。我想在端口80上運行它。我該怎麼做?
var port = process.env.PORT || 3000;
(...)
app.listen(port);
console.log('App listening on port ' + port);
我在AWS設置安全組似乎有80端口也開了:
,所以我認爲這是不夠的,只是改變var port
到= 80
並重新啓動服務器。但是,當我這樣做,我得到了一個錯誤:
[email protected]:~/apps/myproject/www/myproject$ sudo node server.js
App listening on port 80
events.js:141
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::80
at Object.exports._errnoException (util.js:856:11)
at exports._exceptionWithHostPort (util.js:879:20)
at Server._listen2 (net.js:1237:14)
at listen (net.js:1273:10)
at Server.listen (net.js:1369:5)
at Function.app.listen (/opt/bitnami/apps/myproject/www/myproject/node_modules/express/lib/application.js:542:24)
at Object.<anonymous> (/opt/bitnami/apps/myproject/www/myproject/server.js:43:5)
at Module._compile (module.js:398:26)
at Object.Module._extensions..js (module.js:405:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:430:10)
at startup (node.js:141:18)
at node.js:1003:3
我使用Bitnami MEAN 3.2.1-0
系統上亞馬遜。
另外,爲什麼我要改變這個端口的原因是這樣的:
到目前爲止我所有的web服務端口3000進行操作。然而,我也有一個有文件夾public_html
與index.html
文件。所以當任何用戶想要顯示我的網頁時,他不僅要輸入網頁,還要輸入不方便的端口(3000
)。
到目前爲止,整個應用程序停留在www.ec2-some-random-amazom-numbers.eu-west-1.compute.amazonaws.com:3000/index.html,所以我會購買一個正常的頂級域名指向它(例如something.com),但是 - 在那種情況下,我仍然需要將端口3000更改爲80?或者,將應用程序保留在80以外的端口上很常見?
如果是後者,那麼我是否可以離開這個港口,並在最後一個端口3000上指向整個長亞馬遜的頂級域名?
例如:當用戶輸入www.something.com
時,它會將他重定向到 www.ec2-some-random-amazom-numbers.eu-west-1.compute.amazonaws.com:3000/index.html
?
謝謝。你能否給我一個暗示,讓應用程序在'3000'端口是安全的並且可以用作生產環境?然後,我只需將我的頂級域名指向'address.com:3000/index.html',並讓所有web服務在端口'3000'上工作。 – user3766930
我不認爲這會是'不安全'。我個人不喜歡用戶必須記住進入一個端口,但如果你有少量的用戶,他們/可以'受過訓練',那麼我認爲不會有問題。 –