我有来自不同域的多个 nodejs 应用程序,我使用 nginx 从同一台服务器提供服务。我目前在不同的端口(例如 5000、5001、5002 等)上启动每个应用程序。然后使用 nginx proxy_pass 从 ssl 端口 443 为它们提供服务,如下所示:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name mydomain.com;
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2;
include snippets/ssl-params.conf;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:5000/;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
}
}
我正在为每个域/应用程序设置一个类似的块。
我猜我有几个问题:
- 我应该在哪些端口上启动应用程序以避免冲突。是否有我应该使用的标准端口?
- 这是我应该做的方式吗?或者有更好的方法来解决这个问题。
我读到 49151 以上的端口可供任意使用。我是否应该在 49151 以上的端口上启动我的应用程序?
任何指导都将不胜感激。我是一名 Web 开发人员,在服务器端方面没有太多经验。
答案1
ss -lnt
您可以通过运行服务器命令行来检查当前正在使用的端口。然后您可以选择任何未使用的端口。
最好从应用程序服务器默认使用的端口号开始,然后从该端口号开始增加。
由于这些端口是在特定主机上使用的,因此除了已使用的端口之外,实际上没有任何限制。